Skip to content

Commit 467fc80

Browse files
committed
Use $(LD) instead of $(CC) for linking the object files
Plan 9's loader(aka. linker) is separated from the compiler. The compilers are called 8c, 6c... for each machine architectures; corresponded loaders are called 8l, 6l... Signed-off-by: Kyohei Kadota <lufia@lufia.org>
1 parent c850888 commit 467fc80

File tree

5 files changed

+35
-8
lines changed

5 files changed

+35
-8
lines changed

.github/workflows/main.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,7 @@ jobs:
252252
pool: ubuntu-latest
253253
env:
254254
CC: ${{matrix.vector.cc}}
255+
LD: ${{matrix.vector.cc}}
255256
jobname: ${{matrix.vector.jobname}}
256257
runs-on: ${{matrix.vector.pool}}
257258
steps:

Makefile

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -543,6 +543,7 @@ export prefix bindir sharedir sysconfdir gitwebdir perllibdir localedir
543543

544544
# Set our default programs
545545
CC = cc
546+
LD = cc
546547
AR = ar
547548
RM = rm -f
548549
DIFF = diff
@@ -2121,7 +2122,7 @@ git.sp git.s git.o: EXTRA_CPPFLAGS = \
21212122
'-DGIT_INFO_PATH="$(infodir_relative_SQ)"'
21222123

21232124
git$X: git.o GIT-LDFLAGS $(BUILTIN_OBJS) $(GITLIBS)
2124-
$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) \
2125+
$(QUIET_LINK)$(LD) -o $@ $(ALL_LDFLAGS) \
21252126
$(filter %.o,$^) $(LIBS)
21262127

21272128
help.sp help.s help.o: command-list.h
@@ -2445,27 +2446,39 @@ compat/nedmalloc/nedmalloc.sp: SP_EXTRA_FLAGS += -Wno-non-pointer-null
24452446
endif
24462447

24472448
git-%$X: %.o GIT-LDFLAGS $(GITLIBS)
2448-
$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS)
2449+
$(QUIET_LINK)$(LD) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS)
24492450

24502451
git-imap-send$X: imap-send.o $(IMAP_SEND_BUILDDEPS) GIT-LDFLAGS $(GITLIBS)
2451-
$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
2452+
$(QUIET_LINK)$(LD) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
24522453
$(IMAP_SEND_LDFLAGS) $(LIBS)
24532454

24542455
git-http-fetch$X: http.o http-walker.o http-fetch.o GIT-LDFLAGS $(GITLIBS)
2455-
$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
2456+
$(QUIET_LINK)$(LD) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
24562457
$(CURL_LIBCURL) $(LIBS)
24572458
git-http-push$X: http.o http-push.o GIT-LDFLAGS $(GITLIBS)
2458-
$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
2459+
$(QUIET_LINK)$(LD) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
24592460
$(CURL_LIBCURL) $(EXPAT_LIBEXPAT) $(LIBS)
24602461

2462+
<<<<<<< HEAD
2463+
||||||| constructed merge base
2464+
git-remote-testsvn$X: remote-testsvn.o GIT-LDFLAGS $(GITLIBS) $(VCSSVN_LIB)
2465+
$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS) \
2466+
$(VCSSVN_LIB)
2467+
2468+
=======
2469+
git-remote-testsvn$X: remote-testsvn.o GIT-LDFLAGS $(GITLIBS) $(VCSSVN_LIB)
2470+
$(QUIET_LINK)$(LD) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS) \
2471+
$(VCSSVN_LIB)
2472+
2473+
>>>>>>> Use $(LD) instead of $(CC) for linking the object files
24612474
$(REMOTE_CURL_ALIASES): $(REMOTE_CURL_PRIMARY)
24622475
$(QUIET_LNCP)$(RM) $@ && \
24632476
ln $< $@ 2>/dev/null || \
24642477
ln -s $< $@ 2>/dev/null || \
24652478
cp $< $@
24662479

24672480
$(REMOTE_CURL_PRIMARY): remote-curl.o http.o http-walker.o GIT-LDFLAGS $(GITLIBS)
2468-
$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
2481+
$(QUIET_LINK)$(LD) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
24692482
$(CURL_LIBCURL) $(EXPAT_LIBEXPAT) $(LIBS)
24702483

24712484
$(LIB_FILE): $(LIB_OBJS)
@@ -2753,7 +2766,7 @@ perf: all
27532766
t/helper/test-tool$X: $(patsubst %,t/helper/%,$(TEST_BUILTINS_OBJS))
27542767

27552768
t/helper/test-%$X: t/helper/test-%.o GIT-LDFLAGS $(GITLIBS)
2756-
$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(filter %.a,$^) $(LIBS)
2769+
$(QUIET_LINK)$(LD) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(filter %.a,$^) $(LIBS)
27572770

27582771
check-sha1:: t/helper/test-tool$X
27592772
t/helper/test-sha1.sh

ci/lib.sh

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ then
125125
test darwin != "$CI_OS_NAME" || CI_OS_NAME=osx
126126
CI_REPO_SLUG="$(expr "$BUILD_REPOSITORY_URI" : '.*/\([^/]*/[^/]*\)$')"
127127
CC="${CC:-gcc}"
128+
LD="$CC"
128129

129130
# use a subdirectory of the cache dir (because the file share is shared
130131
# among *all* phases)
@@ -149,6 +150,7 @@ then
149150
CI_REPO_SLUG="$GITHUB_REPOSITORY"
150151
CI_JOB_ID="$GITHUB_RUN_ID"
151152
CC="${CC:-gcc}"
153+
LD="$CC"
152154

153155
cache_dir="$HOME/none"
154156

@@ -184,6 +186,7 @@ linux-clang|linux-gcc)
184186
if [ "$jobname" = linux-gcc ]
185187
then
186188
export CC=gcc-8
189+
export LD="$CC"
187190
MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=/usr/bin/python3"
188191
else
189192
MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=/usr/bin/python2"
@@ -207,6 +210,7 @@ osx-clang|osx-gcc)
207210
if [ "$jobname" = osx-gcc ]
208211
then
209212
export CC=gcc-9
213+
export LD="$CC"
210214
MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=$(which python3)"
211215
else
212216
MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=$(which python2)"
@@ -222,12 +226,14 @@ GETTEXT_POISON)
222226
;;
223227
Linux32)
224228
CC=gcc
229+
LD="$CC"
225230
;;
226231
linux-musl)
227232
CC=gcc
233+
LD="$CC"
228234
MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=/usr/bin/python3 USE_LIBPCRE2=Yes"
229235
MAKEFLAGS="$MAKEFLAGS NO_REGEX=Yes ICONV_OMITS_BOM=Yes"
230236
;;
231237
esac
232238

233-
MAKEFLAGS="$MAKEFLAGS CC=${CC:-cc}"
239+
MAKEFLAGS="$MAKEFLAGS CC=${CC:-cc} LD=${LD:-cc}"

config.mak.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
# @configure_input@
33

44
CC = @CC@
5+
LD = @CC@
56
CFLAGS = @CFLAGS@
67
CPPFLAGS = @CPPFLAGS@
78
LDFLAGS = @LDFLAGS@

config.mak.uname

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ ifeq ($(uname_S),GNU/kFreeBSD)
6969
endif
7070
ifeq ($(uname_S),UnixWare)
7171
CC = cc
72+
LD = $(CC)
7273
NEEDS_SOCKET = YesPlease
7374
NEEDS_NSL = YesPlease
7475
NEEDS_SSL_WITH_CRYPTO = YesPlease
@@ -90,6 +91,7 @@ ifeq ($(uname_S),SCO_SV)
9091
endif
9192
ifeq ($(uname_R),5)
9293
CC = cc
94+
LD = $(CC)
9395
BASIC_CFLAGS += -Kthread
9496
endif
9597
NEEDS_SOCKET = YesPlease
@@ -435,6 +437,7 @@ ifeq ($(uname_S),Windows)
435437
DEFAULT_HELP_FORMAT = html
436438

437439
CC = compat/vcbuild/scripts/clink.pl
440+
LD = $(CC)
438441
AR = compat/vcbuild/scripts/lib.pl
439442
CFLAGS =
440443
BASIC_CFLAGS = -nologo -I. -Icompat/vcbuild/include -DWIN32 -D_CONSOLE -DHAVE_STRING_H -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE
@@ -525,6 +528,7 @@ ifeq ($(uname_S),NONSTOP_KERNEL)
525528
ifeq ($(uname_R).$(uname_V),L17.02)
526529
CC += -WRVU=L16.05
527530
endif
531+
LD = $(CC)
528532
# Disable all optimization, seems to result in bad code, with -O or -O2
529533
# or even -O1 (default), /usr/local/libexec/git-core/git-pack-objects
530534
# abends on "git push". Needs more investigation.
@@ -665,8 +669,10 @@ else
665669
BASIC_LDFLAGS += -Wl,--large-address-aware
666670
endif
667671
CC = gcc
672+
LD = $(CC)
668673
COMPAT_CFLAGS += -D__USE_MINGW_ANSI_STDIO=0 -DDETECT_MSYS_TTY \
669674
-fstack-protector-strong
675+
BASIC_LDFLAGS += -fstack-protector-strong
670676
EXTLIBS += -lntdll
671677
INSTALL = /bin/install
672678
NO_R_TO_GCC_LINKER = YesPlease

0 commit comments

Comments
 (0)