summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools/llvm-objcopy
diff options
context:
space:
mode:
authorGeorge Rimar <grimar@accesssoftek.com>2019-03-18 14:27:41 +0000
committerGeorge Rimar <grimar@accesssoftek.com>2019-03-18 14:27:41 +0000
commitfaf308b11a9f6702575593cf036626358851f318 (patch)
tree4ae042ee1d58e1239ebc004d55679cfa77250622 /llvm/test/tools/llvm-objcopy
parent58e9ef139ddfe1b3a6d90deae1c432677a25ec56 (diff)
downloadbcm5719-llvm-faf308b11a9f6702575593cf036626358851f318.tar.gz
bcm5719-llvm-faf308b11a9f6702575593cf036626358851f318.zip
[llvm-objcopy] - Calculate the string table section sizes correctly.
This fixes the https://bugs.llvm.org/show_bug.cgi?id=40980. Previously if string optimization occurred as a result of StringTableBuilder's finalize() method, the size wasn't updated. This hopefully also makes the interaction between sections during finalization processes a bit more clear. Differential revision: https://reviews.llvm.org/D59488 llvm-svn: 356371
Diffstat (limited to 'llvm/test/tools/llvm-objcopy')
-rw-r--r--llvm/test/tools/llvm-objcopy/ELF/basic-archive-copy.test2
-rw-r--r--llvm/test/tools/llvm-objcopy/ELF/cross-arch-sections-symbols.test2
-rw-r--r--llvm/test/tools/llvm-objcopy/ELF/shstrtab-optimize.test28
-rw-r--r--llvm/test/tools/llvm-objcopy/ELF/strtab-optimize.test21
4 files changed, 51 insertions, 2 deletions
diff --git a/llvm/test/tools/llvm-objcopy/ELF/basic-archive-copy.test b/llvm/test/tools/llvm-objcopy/ELF/basic-archive-copy.test
index cf973d6cd3f..6d7e86c7e99 100644
--- a/llvm/test/tools/llvm-objcopy/ELF/basic-archive-copy.test
+++ b/llvm/test/tools/llvm-objcopy/ELF/basic-archive-copy.test
@@ -88,7 +88,7 @@ Symbols:
# CHECK-NEXT: ]
# CHECK-NEXT: Address:
# CHECK-NEXT: Offset:
-# CHECK-NEXT: Size: 6
+# CHECK-NEXT: Size: 5
# CHECK: Name: .shstrtab
# CHECK-NEXT: Type: SHT_STRTAB
diff --git a/llvm/test/tools/llvm-objcopy/ELF/cross-arch-sections-symbols.test b/llvm/test/tools/llvm-objcopy/ELF/cross-arch-sections-symbols.test
index 1d959a97635..fa5832b9dfe 100644
--- a/llvm/test/tools/llvm-objcopy/ELF/cross-arch-sections-symbols.test
+++ b/llvm/test/tools/llvm-objcopy/ELF/cross-arch-sections-symbols.test
@@ -101,7 +101,7 @@ Symbols:
# CHECK-NEXT: ]
# CHECK-NEXT: Address:
# CHECK-NEXT: Offset:
-# CHECK-NEXT: Size: 10
+# CHECK-NEXT: Size: 9
# CHECK-NEXT: Link: 0
# CHECK-NEXT: Info: 0
# CHECK-NEXT: AddressAlignment: 1
diff --git a/llvm/test/tools/llvm-objcopy/ELF/shstrtab-optimize.test b/llvm/test/tools/llvm-objcopy/ELF/shstrtab-optimize.test
new file mode 100644
index 00000000000..24b546cbaf5
--- /dev/null
+++ b/llvm/test/tools/llvm-objcopy/ELF/shstrtab-optimize.test
@@ -0,0 +1,28 @@
+# RUN: yaml2obj %s > %t
+# RUN: llvm-objcopy %t %t2
+# RUN: llvm-readobj --sections %t2 | FileCheck %s
+
+## Check we have the correct size of the .shstrtab section
+## after the strings tail merge optimization.
+
+# CHECK: Name: .shstrtab
+# CHECK-NEXT: Type: SHT_STRTAB
+# CHECK-NEXT: Flags [
+# CHECK-NEXT: ]
+# CHECK-NEXT: Address:
+# CHECK-NEXT: Offset:
+# CHECK-NEXT: Size: 36
+
+!ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+Sections:
+ - Name: .bar
+ Type: SHT_PROGBITS
+ Flags: [ ]
+ - Name: .foo.bar
+ Type: SHT_PROGBITS
+ Flags: [ ]
diff --git a/llvm/test/tools/llvm-objcopy/ELF/strtab-optimize.test b/llvm/test/tools/llvm-objcopy/ELF/strtab-optimize.test
new file mode 100644
index 00000000000..41f86814a80
--- /dev/null
+++ b/llvm/test/tools/llvm-objcopy/ELF/strtab-optimize.test
@@ -0,0 +1,21 @@
+# RUN: yaml2obj %s > %t
+# RUN: llvm-objcopy %t %t2 --add-symbol='foo=1' --add-symbol='foofoo=2'
+# RUN: llvm-readobj --sections %t2 | FileCheck %s
+
+## Check we have the correct size of the .strtab section
+## after the strings tail merge optimization.
+
+# CHECK: Name: .strtab
+# CHECK-NEXT: Type: SHT_STRTAB
+# CHECK-NEXT: Flags [
+# CHECK-NEXT: ]
+# CHECK-NEXT: Address:
+# CHECK-NEXT: Offset:
+# CHECK-NEXT: Size: 8
+
+!ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
OpenPOWER on IntegriCloud