Opened 3 years ago
Closed 12 months ago
#63232 closed defect (fixed)
gcc7 @7.5.0_2: ld: unknown option: -no_pie
Reported by: | kencu (Ken) | Owned by: | |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | |
Keywords: | leopard | Cc: | |
Port: | gcc7 |
Description
After the application of i386 fixes when bootstrapping gcc using clang, that worked so nicely on 10.6, I am disappointed to see this on 10.5 Tiger Intel:
:info:build /usr/bin/g++-4.2 -arch i386 -std=gnu++98 -g -DIN_GCC -fno-strict-aliasing -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wwrite-strings -Wcast-qual -Wno-format -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -fno-common -DHAVE_CONFIG_H -DGENERATOR_FILE -fno-PIE -fPIC -L/opt/local/lib -Wl,-headerpad_max_install_names -Wl,-no_pie -o build/genenums \ :info:build build/genenums.o build/read-md.o build/errors.o ../build-i386-apple-darwin9/libiberty/libiberty.a :info:build ld: unknown option: -no_pie
Obviously, we have a bit more work to do. Exactly why this is happening on 10.5 but not on 10.6 with what appears to be the same linker version remains to be discovered.
Attachments (1)
Change History (7)
Changed 3 years ago by kencu (Ken)
Attachment: | gcc7-fail-leopard-i386.log added |
---|
comment:1 Changed 3 years ago by kencu (Ken)
comment:2 Changed 3 years ago by kencu (Ken)
It seems that passing -Wl,-no_pie
to /usr/bin/g++-4.2
results in the ld: unknown option: -no_pie
error, but passing it to basically all the other compilers is tolerated and does not generate an error.
Not sure why. Perhaps the flag is screened out of the linker invocation?
comment:3 Changed 3 years ago by kencu (Ken)
I see what is going on.
/usr/bin/gcc-4.2
is using
/usr/bin/ld
as the default linker, and that default linker does not support -no_pie
.
For the immediate moment, until iain updates the patch to take this into account, I think I can only enable the no-pie
fix if the bootstrap compiler matches *clang*.
comment:4 Changed 3 years ago by kencu (Ken)
disabling the patch is a bit problematic, it turns out, because the patches are overlapping and you can't get the asm patch without the no-pie patch unless I redo the patches somehow to make them not overlap.
This might be a better idea anyway. supply the flag if it is needed, and not if not needed:
+STAGE1_NO_PIE_FLAG := `case ${host} in *-*-darwin[1-9][1-9]*) echo -Wl,-no_pie ;; esac;` +BOOT_NO_PIE_FLAG := `case ${host} in *-*-darwin[1-9][1-9]*) echo -Wl,-no_pie ;; esac;`
comment:5 Changed 3 years ago by kencu (Ken)
comment:6 Changed 12 months ago by kencu (Ken)
Resolution: | → fixed |
---|---|
Status: | new → closed |
bootstrapping gcc7 on 10.5 Intel forcing clang-N as the build compiler (I used macports-clang-7.0) seems to go down a workable path, and the build is proceeding on.
So -- it would seem that passing the
no_pie
linker option part of this fix is probably not needed, at least on <= 10.6, and seems to generate an error on 10.5 (and no doubt 10.4).I'll work on this.