Hi all,
I’m having trouble with using ld.lld as a drop in replacement for avr-ld in my scripts.
this is the rather complex link command I’m running:
"/Users/carlpeto/Library/Developer/Xcode/DerivedData/Swift_For_Arduino-dzhbxpqoovuaqygrxzyqoxidqiqr/Build/Products/Debug/Swift For Arduino.app/Contents/XPCServices/BuildEngine.xpc/Contents/Resources/llvm/ld.lld" -L"/Users/carlpeto/Library/Application Support/SwiftForArduino/S4A/126/Modules" -L"/Users/carlpeto/Library/Application Support/SwiftForArduino/Extensions/Modules" -L"/Users/carlpeto/Library/Developer/Xcode/DerivedData/Swift_For_Arduino-dzhbxpqoovuaqygrxzyqoxidqiqr/Build/Products/Debug/Swift For Arduino.app/Contents/XPCServices/BuildEngine.xpc/Contents/Resources/gpl-tools-avr/lib/avr-libc/lib/avr5" -L"/Users/carlpeto/Library/Developer/Xcode/DerivedData/Swift_For_Arduino-dzhbxpqoovuaqygrxzyqoxidqiqr/Build/Products/Debug/Swift For Arduino.app/Contents/XPCServices/BuildEngine.xpc/Contents/Resources/gpl-tools-avr/lib/avr-libgcc/avr5" --static -Tdata 0x800100 --gc-sections "/Users/carlpeto/Library/Developer/Xcode/DerivedData/Swift_For_Arduino-dzhbxpqoovuaqygrxzyqoxidqiqr/Build/Products/Debug/Swift For Arduino.app/Contents/XPCServices/BuildEngine.xpc/Contents/Resources/gpl-tools-avr/lib/avr-libc/lib/avr5/crtatmega328p.o" -z dead-reloc-in-nonalloc='.debug_*=0xffffffff' -z dead-reloc-in-
nonalloc='.debug_loc=0xfffffffe' -z dead-reloc-in-nonalloc='.debug_ranges=0xfffffffe' --undefined=_mmcu --section-start=.mmcu=0x910000 -u vfprintf -lprintf_flt --Map=main.map -L"/Users/carlpeto/Library/Developer/Xcode/DerivedData/Swift_For_Arduino-dzhbxpqoovuaqygrxzyqoxidqiqr/Build/Products/Debug/Swift For Arduino.app/Contents/XPCServices/BuildEngine.xpc/Contents/Resources/gpl-tools-avr/lib/avr-binutils/avr/lib/ldscripts" -Tavr5.xn -o main.elf main.o trace.c.o --defsym=__TEXT_REGION_LENGTH__=32768 --defsym=__DATA_REGION_LENGTH__=2048 "/Users/carlpeto/Library/Developer/Xcode/DerivedData/Swift_For_Arduino-dzhbxpqoovuaqygrxzyqoxidqiqr/Build/Products/Debug/Swift For Arduino.app/Contents/XPCServices/BuildEngine.xpc/Contents/Resources/uSwift-AVR/missing_runtime_show_warning.o" -lAVR -L "/Users/carlpeto/Library/Developer/Xcode/DerivedData/Swift_For_Arduino-dzhbxpqoovuaqygrxzyqoxidqiqr/Build/Products/Debug/Swift For Arduino.app/Contents/XPCServices/BuildEngine.xpc/Contents/Resources/uSwift-AVR" -lSwift -lSwiftExperimentalRuntime --start-group -lgcc -lm -lc -latmega328p --end-group
…this throws the error…
ld.lld: error: no memory region specified for section '.mmcu'
ld.lld: warning: address (0x8001ca) of section .bss is not a multiple of alignment (4)
…if i change this to use avr-ld
then it works fine…
avr-ld -L"/Users/carlpeto/Library/Application Support/SwiftForArduino/S4A/126/Modules" -L"/Users/carlpeto/Library/Application Support/SwiftForArduino/Extensions/Modules" -L"/Users/carlpeto/Library/Developer/Xcode/DerivedData/Swift_For_Arduino-dzhbxpqoovuaqygrxzyqoxidqiqr/Build/Products/Debug/Swift For Arduino.app/Contents/XPCServices/BuildEngine.xpc/Contents/Resources/gpl-tools-avr/lib/avr-libc/lib/avr5" -L"/Users/carlpeto/Library/Developer/Xcode/DerivedData/Swift_For_Arduino-dzhbxpqoovuaqygrxzyqoxidqiqr/Build/Products/Debug/Swift For Arduino.app/Contents/XPCServices/BuildEngine.xpc/Contents/Resources/gpl-tools-avr/lib/avr-libgcc/avr5" --static -Tdata 0x800100 --gc-sections "/Users/carlpeto/Library/Developer/Xcode/DerivedData/Swift_For_Arduino-dzhbxpqoovuaqygrxzyqoxidqiqr/Build/Products/Debug/Swift For Arduino.app/Contents/XPCServices/BuildEngine.xpc/Contents/Resources/gpl-tools-avr/lib/avr-libc/lib/avr5/crtatmega328p.o" -z dead-reloc-in-nonalloc='.debug_*=0xffffffff' -z dead-reloc-in-nonalloc='.debug_loc=0xfffffffe' -z dead-reloc-in-nonalloc='.debug_ranges=0xfffffffe' --undefined=_mmcu --section-start=.mmcu=0x910000 -u vfprintf -lprintf_flt --Map=main.map -L"/Users/carlpeto/Library/Developer/Xcode/DerivedData/Swift_For_Arduino-dzhbxpqoovuaqygrxzyqoxidqiqr/Build/Products/Debug/Swift For Arduino.app/Contents/XPCServices/BuildEngine.xpc/Contents/Resources/gpl-tools-avr/lib/avr-binutils/avr/lib/ldscripts" -Tavr5.xn -o main.elf main.o trace.c.o --defsym=__TEXT_REGION_LENGTH__=32768 --defsym=__DATA_REGION_LENGTH__=2048 "/Users/carlpeto/Library/Developer/Xcode/DerivedData/Swift_For_Arduino-dzhbxpqoovuaqygrxzyqoxidqiqr/Build/Products/Debug/Swift For Arduino.app/Contents/XPCServices/BuildEngine.xpc/Contents/Resources/uSwift-AVR/missing_runtime_show_warning.o" -lAVR -L "/Users/carlpeto/Library/Developer/Xcode/DerivedData/Swift_For_Arduino-dzhbxpqoovuaqygrxzyqoxidqiqr/Build/Products/Debug/Swift For Arduino.app/Contents/XPCServices/BuildEngine.xpc/Contents/Resources/uSwift-AVR" -lSwift -lSwiftExperimentalRuntime --start-group -lgcc -lm -lc -latmega328p --end-group
avr-ld: warning: -z dead-reloc-in-nonalloc=.debug_*=0xffffffff ignored
avr-ld: warning: -z dead-reloc-in-nonalloc=.debug_loc=0xfffffffe ignored
avr-ld: warning: -z dead-reloc-in-nonalloc=.debug_ranges=0xfffffffe ignored
the section that is not being linked correctly (.mmcu
) comes from trace.c.o
and is supposed to be there, I want it in the final elf. avr-ld
does this correctly.
Can anyone suggest what I might be doing wrong?
(p.s. I checked that both are using the same linker script avr5.xn
.)