[PATCH] D144617: [AVR][MC] Add ELF flag 'EF_AVR_LINKRELAX_PREPARED' to OBJ files

Ben Shi via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 22 23:10:55 PST 2023


benshi001 created this revision.
benshi001 added reviewers: jacquesguan, aykevl.
Herald added subscribers: Jim, hiraditya, dylanmckay.
Herald added a project: All.
benshi001 requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

This is in accordance with avr-gcc, even '-mno-relax' is specified
to avr-gcc, this flag will also be added to the output relocatables.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D144617

Files:
  llvm/lib/Target/AVR/MCTargetDesc/AVRELFStreamer.cpp
  llvm/test/MC/AVR/elf_header.s


Index: llvm/test/MC/AVR/elf_header.s
===================================================================
--- /dev/null
+++ llvm/test/MC/AVR/elf_header.s
@@ -0,0 +1,78 @@
+; RUN: llvm-mc -filetype=obj -triple avr -mcpu=at90s8515 %s -o - \
+; RUN:     | llvm-readobj -h - | FileCheck --check-prefixes=ALL,AVR2 %s
+; RUN: llvm-mc -filetype=obj -triple avr -mcpu=attiny13a %s -o - \
+; RUN:     | llvm-readobj -h - | FileCheck --check-prefixes=ALL,AVR25 %s
+; RUN: llvm-mc -filetype=obj -triple avr -mcpu=attiny167 %s -o - \
+; RUN:     | llvm-readobj -h - | FileCheck --check-prefixes=ALL,AVR35 %s
+; RUN: llvm-mc -filetype=obj -triple avr -mcpu=atmega88 %s -o - \
+; RUN:     | llvm-readobj -h - | FileCheck --check-prefixes=ALL,AVR4 %s
+; RUN: llvm-mc -filetype=obj -triple avr -mcpu=atmega16 %s -o - \
+; RUN:     | llvm-readobj -h - | FileCheck --check-prefixes=ALL,AVR5 %s
+; RUN: llvm-mc -filetype=obj -triple avr -mcpu=atmega128 %s -o - \
+; RUN:     | llvm-readobj -h - | FileCheck --check-prefixes=ALL,AVR51 %s
+; RUN: llvm-mc -filetype=obj -triple avr -mcpu=attiny817 %s -o - \
+; RUN:     | llvm-readobj -h - | FileCheck --check-prefixes=ALL,XM3 %s
+; RUN: llvm-mc -filetype=obj -triple avr -mcpu=atxmega256a3u %s -o - \
+; RUN:     | llvm-readobj -h - | FileCheck --check-prefixes=ALL,XM6 %s
+; RUN: llvm-mc -filetype=obj -triple avr -mcpu=atxmega256a3u %s -o - \
+; RUN:     | llvm-readobj -h - | FileCheck --check-prefixes=ALL,XM6 %s
+; RUN: llvm-mc -filetype=obj -triple avr -mcpu=attiny10 %s -o - \
+; RUN:     | llvm-readobj -h - | FileCheck --check-prefixes=ALL,TINY %s
+
+foo:
+	rjmp .
+	ret
+
+; ALL:       ElfHeader {
+; ALL-NEXT:    Ident {
+; ALL-NEXT:      Magic: (7F 45 4C 46)
+; ALL-NEXT:      Class: 32-bit (0x1)
+; ALL-NEXT:      DataEncoding: LittleEndian (0x1)
+; ALL-NEXT:      FileVersion: 1
+; ALL-NEXT:      OS/ABI: SystemV (0x0)
+; ALL-NEXT:      ABIVersion: 0
+; ALL-NEXT:      Unused: (00 00 00 00 00 00 00)
+; ALL-NEXT:    }
+; ALL-NEXT:    Type: Relocatable (0x1)
+; ALL-NEXT:    Machine: EM_AVR (0x53)
+; ALL-NEXT:    Version: 1
+; ALL-NEXT:    Entry: 0x0
+; ALL-NEXT:    ProgramHeaderOffset: 0x0
+; ALL-NEXT:    SectionHeaderOffset: 0x74
+
+; AVR2:        Flags [ (0x82)
+; AVR2-NEXT:     EF_AVR_ARCH_AVR2 (0x2)
+
+; AVR25:       Flags [ (0x99)
+; AVR25-NEXT:    EF_AVR_ARCH_AVR25 (0x19)
+
+; AVR35:       Flags [ (0xA3)
+; AVR35-NEXT:    EF_AVR_ARCH_AVR35 (0x23)
+
+; AVR4:        Flags [ (0x84)
+; AVR4-NEXT:     EF_AVR_ARCH_AVR4 (0x4)
+
+; AVR5:        Flags [ (0x85)
+; AVR5-NEXT:     EF_AVR_ARCH_AVR5 (0x5)
+
+; AVR51:       Flags [ (0xB3)
+; AVR51-NEXT:    EF_AVR_ARCH_AVR51 (0x33)
+
+; XM3:         Flags [ (0xE7)
+; XM3-NEXT:      EF_AVR_ARCH_XMEGA3 (0x67)
+
+; XM6:         Flags [ (0xEA)
+; XM6-NEXT:      EF_AVR_ARCH_XMEGA6 (0x6A)
+
+; TINY:        Flags [ (0xE4)
+; TINY-NEXT:     EF_AVR_ARCH_AVRTINY (0x64)
+
+; ALL:           EF_AVR_LINKRELAX_PREPARED (0x80)
+; ALL-NEXT:    ]
+; ALL-NEXT:    HeaderSize: 52
+; ALL-NEXT:    ProgramHeaderEntrySize: 0
+; ALL-NEXT:    ProgramHeaderCount: 0
+; ALL-NEXT:    SectionHeaderEntrySize: 40
+; ALL-NEXT:    SectionHeaderCount: 4
+; ALL-NEXT:    StringTableSectionIndex: 1
+; ALL-NEXT:  }
Index: llvm/lib/Target/AVR/MCTargetDesc/AVRELFStreamer.cpp
===================================================================
--- llvm/lib/Target/AVR/MCTargetDesc/AVRELFStreamer.cpp
+++ llvm/lib/Target/AVR/MCTargetDesc/AVRELFStreamer.cpp
@@ -61,6 +61,7 @@
   unsigned EFlags = MCA.getELFHeaderEFlags();
 
   EFlags |= getEFlagsForFeatureSet(STI.getFeatureBits());
+  EFlags |= ELF::EF_AVR_LINKRELAX_PREPARED;
 
   MCA.setELFHeaderEFlags(EFlags);
 }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D144617.499734.patch
Type: text/x-patch
Size: 3630 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230223/13f6d53e/attachment.bin>


More information about the llvm-commits mailing list