mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-21 12:02:58 +02:00
7e2d822599
This diff adds support for SHT_GROUP sections to llvm-objcopy. Some sections are interrelated and comprise a group. For example, a definition of an inline function might require, in addition to the section containing its instructions, a read-only data section containing literals referenced inside the function. A section of the type SHT_GROUP contains the indices of the group members, therefore, it needs to be updated whenever the indices change. Similarly, the fields sh_link, sh_info should be recalculated as well. [Resubmit r328012 with the proper handling of endianness] Test plan: make check-all Differential revision: https://reviews.llvm.org/D43996 llvm-svn: 328143
41 lines
1.2 KiB
Plaintext
41 lines
1.2 KiB
Plaintext
# RUN: cp %p/Inputs/groups.o %t
|
|
# RUN: llvm-objcopy -strip-dwo %t
|
|
# RUN: llvm-readobj -elf-section-groups %t | FileCheck %s
|
|
|
|
// Source code of groups.o:
|
|
//
|
|
// template <class T>
|
|
// struct S {
|
|
// static constexpr T X = T(1);
|
|
// T getX() { return X; }
|
|
// };
|
|
// void f() {
|
|
// S<int> A;
|
|
// S<double> B;
|
|
// int a = A.getX();
|
|
// int b = B.getX();
|
|
// }
|
|
//
|
|
// clang -g -gsplit-dwarf -std=c++11 -c groups.cpp -o groups.o
|
|
|
|
// `llvm-objcopy -strip-dwo` strips out dwo sections, as a result, the index of
|
|
// the symbol table, the indices of the symbols and the indices of the sections
|
|
// which go after the removed ones will change. Consequently, the fields
|
|
// Link, Info and the content of .group need to be updated. In the past
|
|
// `llvm-objcopy -strip-dwo` used to produce invalid binaries with
|
|
// broken .group section, this test verifies the correctness of
|
|
// Link, Info and the content of this section.
|
|
|
|
CHECK: Name: .group (179)
|
|
CHECK-NEXT: Index: 17
|
|
CHECK-NEXT: Link: 19
|
|
CHECK-NEXT: Info: 14
|
|
CHECK: .text._ZN1SIiE4getXEv (2)
|
|
|
|
CHECK: Name: .group (179)
|
|
CHECK-NEXT: Index: 18
|
|
CHECK-NEXT: Link: 19
|
|
CHECK-NEXT: Info: 13
|
|
CHECK: .text._ZN1SIdE4getXEv (4)
|
|
CHECK-NEXT: .rela.text._ZN1SIdE4getXEv (21)
|