Hallo, im Netz findet man zwar viele Buildlogs, die die Warnung "warning: -z relro ignored." enthalten, aber ich habe keine Erklaerung oder Abhilfe gegen diese Warnung gefunden. Hat jemand dazu eine Idee? Danke
Ich arbeite mit Opensuse 13.2 . In meinen Nutzercode und Makefiles kommt das Wort "relro" nicht vor. :~/devel/ethernut_sf/nut> grep -rl relro Genausowenig in relevanten Files den avr Verzeichnissen: :/opt/cross/avr> grep -rl relro bin/avr-insight bin/avr-gdbtui bin/avr-gdb :/opt/cross/avr> rpm -qf bin/avr-gdbtui cross-avr-insight-6.8.1-36.1.x86_64 Ist das evt ein Compiletime Option, die Suse unguenstig gesetzt hat? Irgendeine Moeglichkeit, dass zu ueberschreiben?
Uwe B. schrieb: > Ist das evt ein Compiletime Option, die Suse unguenstig gesetzt hat? > Irgendeine Moeglichkeit, dass zu ueberschreiben? Wenn der Linker mosert, ist es eher eine Linker Option.
Ohne genauere Infos lässt sich nur raten. Für fragen zu SuSE fragst du am besten SuSE, oder nicht?
Ich vermute Du kompilierst mit der AVR Toolchain. Woher hast Du die und welche Version? (Aargh, lesen, steht ja oben, sry). Das es am SuSE liegt, glaube ich eher weniger. Edit: Benutzt Du eine IDE? Wenn ja, welche?
Wie ist denn das Kommando, das zu der Meldung gehört?
> which avr-gcc /usr/bin/avr-gcc > rpm -qfi /usr/bin/avr-gcc Name : cross-avr-gcc Version : 4.8.3 Release : 1.1 Architecture: x86_64 Install Date: Mo 21 Mär 2016 17:59:20 CET Group : Development/Libraries/C and C++ Size : 99543046 License : GPL-3.0+ Signature : DSA/SHA1, Fr 21 Nov 2014 16:34:24 CET, Key ID 76b8164a5a4c615b Source RPM : cross-avr-gcc-4.8.3-1.1.src.rpm Build Date : Fr 21 Nov 2014 16:26:10 CET Build Host : build17 Relocations : (not relocatable) Vendor : obs://build.opensuse.org/CrossToolchain:avr URL : http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=42631 Summary : The GNU C Compiler for Atmel AVR with xmega support Description : This compiler supports the C language on AVR microprocessors. Also install cross-avr-binutils and avr-libc. gcc built for Atmel AVR with the instrutions from wrightflyer. Distribution: CrossToolchain:avr / openSUSE_13.2 > /usr/bin/avr-gcc -v Using built-in specs. COLLECT_GCC=/opt/cross/avr/bin/avr-gcc COLLECT_LTO_WRAPPER=/opt/cross/avr/libexec/gcc/avr/4.8.3/lto-wrapper Target: avr Configured with: ../gcc-4.8.3/configure -v --target=avr --disable-nls --mandir=/opt/cross/avr/share/man --infodir=/opt/cross/avr/share/info --program-prefix=avr- --prefix=/opt/cross/avr --with-gnu-ld --with-gnu-as --enable-languages=c,c++ --disable-libssp --with-dwarf2 Thread model: single gcc version 4.8.3 (GCC) Ich arbeite ohne IDE. Das Ethernut Framework erzeugt aus gegebenen Konfigurationen Bibliotheken und beim Linken der Beispiele kommt dann die Warnung. Wie oben gezeigt, gibt es im gesamten Ethernut Framework kein vorkommen von "relro". Und die Treffer bei der Suche nach relro in /opt/cros/avr /opt/cross/avr> grep -rli relro lib/gcc/avr/4.8.3/plugin/include/output.h bin/avr-insight bin/avr-gdbtui bin/avr-gdb erscheinen mir auch nicht relevant fuer das Kompilieren und Linken.
Johann L. schrieb: > Wie ist denn das Kommando, das zu der Meldung gehört? > avr-gcc -c -I/devel/ethernut_sf/build/ethernut103/./include -I/devel/ethernut_sf/build/ethernut103/../../nut/include -I/devel/ethernut_sf/build/ethernut103/../../nut/include/contrib -DETHERNUT1 -DBOOTLOADER_OFFSET=0 -D__HARVARD_ARCH__ -MD -MP -mmcu=atmega103 -Os -ffunction-sections -fno-delete-null-pointer-checks -Wall -Wstrict-prototypes -Wa,-a=simple.lst -o simple.o simple.c hertz:~/devel/ethernut_sf/build/ethernut103/apps/simple> avr-gcc simple.o -mmcu=atmega103 -Wl,--gc-sections -Wl,--defsym=main=0,-Map=simple.map,--cref -L/devel/ethernut_sf/build/ethernut103/./lib -Wl,--start-group /devel/ethernut_sf/build/ethernut103/./lib/nutinit.o -lnutos -lnutarch -lnutdev -lnutarch -lnutcrt -Wl,--end-group -o simple.elf /opt/cross/avr/lib/gcc/avr/4.8.3/../../../../avr/bin/ld: warning: -z relro ignored.
Der 2te Aufruf (link) zusätzlich mit -v -Wl,-v ? Wie wurde avr-gcc configured? Was sagt das Mapfile? Gibt es Objekte in .rel Sections? Wenn ja, wie kommen die dahin?
> avr-gcc simple.o -mmcu=atmega103 -Wl,--gc-sections
-Wl,--defsym=main=0,-Map=simple.map,--cref
-L/devel/ethernut_sf/build/ethernut103/./lib -Wl,--start-group
/devel/ethernut_sf/build/ethernut103/./lib/nutinit.o -lnutos -lnutarch -lnutdev
-lnutarch -lnutcrt -Wl,--end-group -o simple.elf -v -Wl,-v
Using built-in specs.
COLLECT_GCC=/opt/cross/avr/bin/avr-gcc
COLLECT_LTO_WRAPPER=/opt/cross/avr/libexec/gcc/avr/4.8.3/lto-wrapper
Target: avr
Configured with: ../gcc-4.8.3/configure -v --target=avr --disable-nls
--mandir=/opt/cross/avr/share/man --infodir=/opt/cross/avr/share/info
--program-prefix=avr- --prefix=/opt/cross/avr --with-gnu-ld
--with-gnu-as --enable-languages=c,c++ --disable-libssp --with-dwarf2
Thread model: single
gcc version 4.8.3 (GCC)
COMPILER_PATH=/opt/cross/avr/libexec/gcc/avr/4.8.3/:/opt/cross/avr/libex
ec/gcc/avr/4.8.3/:/opt/cross/avr/libexec/gcc/avr/:/opt/cross/avr/lib/gcc
/avr/4.8.3/:/opt/cross/avr/lib/gcc/avr/:/opt/cross/avr/lib/gcc/avr/4.8.3
/../../../../avr/bin/
LIBRARY_PATH=/opt/cross/avr/lib/gcc/avr/4.8.3/avr31/:/opt/cross/avr/lib/
gcc/avr/4.8.3/../../../../avr/lib/avr31/:/opt/cross/avr/lib/gcc/avr/4.8.
3/:/opt/cross/avr/lib/gcc/avr/4.8.3/../../../../avr/lib/
COLLECT_GCC_OPTIONS='-mmcu=atmega103'
'-L/devel/ethernut_sf/build/ethernut103/./lib' '-o' 'simple.elf' '-v'
/opt/cross/avr/libexec/gcc/avr/4.8.3/collect2 -m avr31 -o simple.elf
/opt/cross/avr/lib/gcc/avr/4.8.3/../../../../avr/lib/avr31/crtm103.o
-L/devel/ethernut_sf/build/ethernut103/./lib
-L/opt/cross/avr/lib/gcc/avr/4.8.3/avr31
-L/opt/cross/avr/lib/gcc/avr/4.8.3/../../../../avr/lib/avr31
-L/opt/cross/avr/lib/gcc/avr/4.8.3
-L/opt/cross/avr/lib/gcc/avr/4.8.3/../../../../avr/lib simple.o
--gc-sections --defsym=main=0 -Map=simple.map --cref --start-group
/devel/ethernut_sf/build/ethernut103/./lib/nutinit.o -lnutos -lnutarch
-lnutdev -lnutarch -lnutcrt --end-group -v --start-group -lgcc -lm -lc
--end-group
collect2 version 4.8.3
/opt/cross/avr/lib/gcc/avr/4.8.3/../../../../avr/bin/ld -m avr31 -o
simple.elf
/opt/cross/avr/lib/gcc/avr/4.8.3/../../../../avr/lib/avr31/crtm103.o
-L/devel/ethernut_sf/build/ethernut103/./lib
-L/opt/cross/avr/lib/gcc/avr/4.8.3/avr31
-L/opt/cross/avr/lib/gcc/avr/4.8.3/../../../../avr/lib/avr31
-L/opt/cross/avr/lib/gcc/avr/4.8.3
-L/opt/cross/avr/lib/gcc/avr/4.8.3/../../../../avr/lib simple.o
--gc-sections --defsym=main=0 -Map=simple.map --cref --start-group
/devel/ethernut_sf/build/ethernut103/./lib/nutinit.o -lnutos -lnutarch
-lnutdev -lnutarch -lnutcrt --end-group -v --start-group -lgcc -lm -lc
--end-group
GNU ld (GNU Binutils; devel:gcc / openSUSE_13.2) 2.26.0.20160318-244
/opt/cross/avr/lib/gcc/avr/4.8.3/../../../../avr/bin/ld: warning: -z
relro ignored
Im Mapfile m eine ich, dass dort keine Objekte sind.
.gnu.version_r
*(.gnu.version_r)
.rel.init
*(.rel.init)
...
.rela.plt
*(.rela.plt)
Johann L. schrieb: > Wie wurde avr-gcc configured? Ist das nicht weiter oben in der Ausgabe von "avr-gcc -v" zu sehen?
The concept of time is to keep things from happening at once. It does not work ;-)
Jedenfalls ist verwirrend, dass ld nicht mit "-z relro" aufgerufen wird.
Die Warnung kommt aus dem avr-ld selbst: > avr-ld avr-ld: warning: -z relro ignored. avr-ld: no input files > which avr-ld /usr/bin/avr-ld > rpm -qfi /usr/bin/avr-ld Name : cross-avr-binutils Version : 2.26 Release : 244.1 Architecture: x86_64 Install Date: Mo 21 Mär 2016 17:59:21 CET Group : Development/Tools/Building Size : 12053141 License : GFDL-1.3 and GPL-3.0+ Signature : DSA/SHA1, Fr 18 Mär 2016 09:09:29 CET, Key ID 927f5cc86300dadb Source RPM : cross-avr-binutils-2.26-244.1.src.rpm Build Date : Fr 18 Mär 2016 09:08:37 CET Build Host : wildcard2 Relocations : (not relocatable) Vendor : obs://build.opensuse.org/devel:gcc URL : http://www.gnu.org/software/binutils/ Summary : GNU Binutils Description : C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib, size, strings, and strip. These utilities are needed whenever you want to compile a program or kernel. Distribution: devel:gcc / openSUSE_13.2 Gibt es andere relativ aktuelle AVR-GCC Pakete?
Ich würd da fast aufn Problem bei Binutils tippen, d.h. für weitere Info ld debuggen :-) oder direkt in der Binutils Mailingliste (binutils@sourceware.org) nachfragen, siehe http://sourceware.org/binutils/ unter "Mailing Lists". Mit den ganzen Libs ist das aber für andere nicht leicht nachzuvollzuiehen. Interessant wäre auch, ob das für ein "normales" Projekt oder Minibeispiel ohne Ethernut-Libs und -Startup auch auftritt, und ob es stört dass ein *.o in --start-group --end-group steht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.