Skip to content

Commit d023186

Browse files
committed
fixup: Fix the alignment of the description if the name is empty
1 parent e0f7383 commit d023186

File tree

2 files changed

+76
-17
lines changed

2 files changed

+76
-17
lines changed

llvm/lib/ObjectYAML/ELFEmitter.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1834,14 +1834,15 @@ void ELFState<ELFT>::writeSectionContent(Elf_Shdr &SHeader,
18341834
if (!NE.Name.empty()) {
18351835
CBA.write(NE.Name.data(), NE.Name.size());
18361836
CBA.write('\0');
1837-
CBA.padToAlignment(Align);
18381837
}
18391838

18401839
// Write description and padding.
18411840
if (NE.Desc.binary_size() != 0) {
1842-
CBA.writeAsBinary(NE.Desc);
18431841
CBA.padToAlignment(Align);
1842+
CBA.writeAsBinary(NE.Desc);
18441843
}
1844+
1845+
CBA.padToAlignment(Align);
18451846
}
18461847

18471848
SHeader.sh_size = CBA.tell() - Offset;

llvm/test/tools/yaml2obj/ELF/note-section.yaml

Lines changed: 73 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -355,24 +355,84 @@ Sections:
355355
## specified section alignment
356356

357357
# RUN: yaml2obj --docnum=17 %s -o - | \
358-
# RUN: llvm-readobj --sections --section-data - | \
358+
# RUN: llvm-readobj --sections --section-data --notes - | \
359359
# RUN: FileCheck %s --check-prefix=TEST17
360360

361361
# TEST17: Name: .note.foo4
362362
# TEST17: SectionData (
363363
# TEST17-NEXT: 0000: 05000000 02000000 01000000 41424344 |............ABCD|
364-
# TEST17-NEXT: 0010: 00000000 01020000 03000000 03000000 |................|
365-
# TEST17-NEXT: 0020: 02000000 41420000 03040500 03000000 |....AB..........|
366-
# TEST17-NEXT: 0030: 00000000 03000000 41420000 |........AB..|
364+
# TEST17-NEXT: 0010: 00000000 01020000 00000000 03000000 |................|
365+
# TEST17-NEXT: 0020: 02000000 03040500 04000000 00000000 |................|
366+
# TEST17-NEXT: 0030: 03000000 474E5500 |....GNU.|
367367
# TEST17-NEXT: )
368368
# TEST17: Name: .note.foo8
369369
# TEST17: SectionData (
370370
# TEST17-NEXT: 0000: 05000000 02000000 01000000 41424344 |............ABCD|
371371
# TEST17-NEXT: 0010: 00000000 00000000 01020000 00000000 |................|
372-
# TEST17-NEXT: 0020: 03000000 03000000 02000000 41420000 |............AB..|
373-
# TEST17-NEXT: 0030: 03040500 00000000 03000000 00000000 |................|
374-
# TEST17-NEXT: 0040: 03000000 41420000 |....AB..|
372+
# TEST17-NEXT: 0020: 00000000 03000000 02000000 00000000 |................|
373+
# TEST17-NEXT: 0030: 03040500 00000000 04000000 00000000 |................|
374+
# TEST17-NEXT: 0040: 03000000 474E5500 |....GNU.|
375375
# TEST17-NEXT: )
376+
# TEST17: NoteSections [
377+
# TEST17-NEXT: NoteSection {
378+
# TEST17-NEXT: Name: .note.foo4
379+
# TEST17-NEXT: Offset:
380+
# TEST17-NEXT: Size:
381+
# TEST17-NEXT: Notes [
382+
# TEST17-NEXT: {
383+
# TEST17-NEXT: Owner: ABCD
384+
# TEST17-NEXT: Data size: 0x2
385+
# TEST17-NEXT: Type: NT_VERSION (version)
386+
# TEST17-NEXT: Description data (
387+
# TEST17-NEXT: 0000: 0102 |..|
388+
# TEST17-NEXT: )
389+
# TEST17-NEXT: }
390+
# TEST17-NEXT: {
391+
# TEST17-NEXT: Owner:
392+
# TEST17-NEXT: Data size: 0x3
393+
# TEST17-NEXT: Type: NT_ARCH (architecture)
394+
# TEST17-NEXT: Description data (
395+
# TEST17-NEXT: 0000: 030405 |...|
396+
# TEST17-NEXT: )
397+
# TEST17-NEXT: }
398+
# TEST17-NEXT: {
399+
# TEST17-NEXT: Owner: GNU
400+
# TEST17-NEXT: Data size: 0x0
401+
# TEST17-NEXT: Type: NT_GNU_BUILD_ID (unique build ID bitstring)
402+
# TEST17-NEXT: Build ID:
403+
# TEST17-NEXT: }
404+
# TEST17-NEXT: ]
405+
# TEST17-NEXT: }
406+
# TEST17-NEXT: NoteSection {
407+
# TEST17-NEXT: Name: .note.foo8
408+
# TEST17-NEXT: Offset:
409+
# TEST17-NEXT: Size:
410+
# TEST17-NEXT: Notes [
411+
# TEST17-NEXT: {
412+
# TEST17-NEXT: Owner: ABCD
413+
# TEST17-NEXT: Data size: 0x2
414+
# TEST17-NEXT: Type: NT_VERSION (version)
415+
# TEST17-NEXT: Description data (
416+
# TEST17-NEXT: 0000: 0102 |..|
417+
# TEST17-NEXT: )
418+
# TEST17-NEXT: }
419+
# TEST17-NEXT: {
420+
# TEST17-NEXT: Owner:
421+
# TEST17-NEXT: Data size: 0x3
422+
# TEST17-NEXT: Type: NT_ARCH (architecture)
423+
# TEST17-NEXT: Description data (
424+
# TEST17-NEXT: 0000: 030405 |...|
425+
# TEST17-NEXT: )
426+
# TEST17-NEXT: }
427+
# TEST17-NEXT: {
428+
# TEST17-NEXT: Owner: GNU
429+
# TEST17-NEXT: Data size: 0x0
430+
# TEST17-NEXT: Type: NT_GNU_BUILD_ID (unique build ID bitstring)
431+
# TEST17-NEXT: Build ID:
432+
# TEST17-NEXT: }
433+
# TEST17-NEXT: ]
434+
# TEST17-NEXT: }
435+
# TEST17-NEXT: ]
376436

377437
--- !ELF
378438
FileHeader:
@@ -385,22 +445,20 @@ Sections:
385445
AddressAlign: 4
386446
Notes:
387447
- Name: ABCD
388-
Desc: 0102
389448
Type: NT_VERSION
390-
- Name: AB
449+
Desc: 0102
450+
- Type: NT_ARCH
391451
Desc: 030405
392-
Type: NT_ARCH
393-
- Name: AB
452+
- Name: GNU
394453
Type: NT_GNU_BUILD_ID
395454
- Name: .note.foo8
396455
Type: SHT_NOTE
397456
AddressAlign: 8
398457
Notes:
399458
- Name: ABCD
400-
Desc: 0102
401459
Type: NT_VERSION
402-
- Name: AB
460+
Desc: 0102
461+
- Type: NT_ARCH
403462
Desc: 030405
404-
Type: NT_ARCH
405-
- Name: AB
463+
- Name: GNU
406464
Type: NT_GNU_BUILD_ID

0 commit comments

Comments
 (0)