[Lldb-commits] [lldb] r337459 - ELF: Replace the header-extension unit test with a lit one

Pavel Labath via lldb-commits lldb-commits at lists.llvm.org
Thu Jul 19 07:38:30 PDT 2018


Author: labath
Date: Thu Jul 19 07:38:30 2018
New Revision: 337459

URL: http://llvm.org/viewvc/llvm-project?rev=337459&view=rev
Log:
ELF: Replace the header-extension unit test with a lit one

The new test checks that we are actually able to read data from these
kinds of elf headers correctly instead of just that we read the section
number correctly. It is also easier to figure out what's going on in the
test.

Added:
    lldb/trunk/lit/Modules/elf-many-sections.s
Removed:
    lldb/trunk/unittests/ObjectFile/ELF/TestELFHeader.cpp
Modified:
    lldb/trunk/lit/Modules/lit.local.cfg
    lldb/trunk/unittests/ObjectFile/ELF/CMakeLists.txt

Added: lldb/trunk/lit/Modules/elf-many-sections.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Modules/elf-many-sections.s?rev=337459&view=auto
==============================================================================
--- lldb/trunk/lit/Modules/elf-many-sections.s (added)
+++ lldb/trunk/lit/Modules/elf-many-sections.s Thu Jul 19 07:38:30 2018
@@ -0,0 +1,72 @@
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux %s -o %t
+# RUN: lldb-test object-file %t | FileCheck %s
+
+## Check that we are able to parse ELF files with more than SHN_LORESERVE
+## sections. This generates a file that contains 64k sections from
+## aaaaaaaa..dddddddd, plus a couple of standard ones (.strtab, etc.)
+## Check the number is correct plus the names of a couple of chosen sections.
+
+# CHECK: Showing 65541 sections
+# CHECK: Name: aaaaaaaa
+# CHECK: Name: bbbbbbbb
+# CHECK: Name: cccccccc
+# CHECK: Name: abcdabcd
+# CHECK: Name: dddddddd
+
+.macro gen_sections4 x
+  .section a\x
+  .section b\x
+  .section c\x
+  .section d\x
+.endm
+
+.macro gen_sections16 x
+  gen_sections4 a\x
+  gen_sections4 b\x
+  gen_sections4 c\x
+  gen_sections4 d\x
+.endm
+
+.macro gen_sections64 x
+  gen_sections16 a\x
+  gen_sections16 b\x
+  gen_sections16 c\x
+  gen_sections16 d\x
+.endm
+
+.macro gen_sections256 x
+  gen_sections64 a\x
+  gen_sections64 b\x
+  gen_sections64 c\x
+  gen_sections64 d\x
+.endm
+
+.macro gen_sections1024 x
+  gen_sections256 a\x
+  gen_sections256 b\x
+  gen_sections256 c\x
+  gen_sections256 d\x
+.endm
+
+.macro gen_sections4096 x
+  gen_sections1024 a\x
+  gen_sections1024 b\x
+  gen_sections1024 c\x
+  gen_sections1024 d\x
+.endm
+
+.macro gen_sections16384 x
+  gen_sections4096 a\x
+  gen_sections4096 b\x
+  gen_sections4096 c\x
+  gen_sections4096 d\x
+.endm
+
+gen_sections16384 a
+gen_sections16384 b
+gen_sections16384 c
+gen_sections16384 d
+
+.global _start
+_start:

Modified: lldb/trunk/lit/Modules/lit.local.cfg
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Modules/lit.local.cfg?rev=337459&r1=337458&r2=337459&view=diff
==============================================================================
--- lldb/trunk/lit/Modules/lit.local.cfg (original)
+++ lldb/trunk/lit/Modules/lit.local.cfg Thu Jul 19 07:38:30 2018
@@ -1 +1 @@
-config.suffixes = ['.yaml']
+config.suffixes = ['.s', '.yaml']

Modified: lldb/trunk/unittests/ObjectFile/ELF/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/ObjectFile/ELF/CMakeLists.txt?rev=337459&r1=337458&r2=337459&view=diff
==============================================================================
--- lldb/trunk/unittests/ObjectFile/ELF/CMakeLists.txt (original)
+++ lldb/trunk/unittests/ObjectFile/ELF/CMakeLists.txt Thu Jul 19 07:38:30 2018
@@ -1,5 +1,4 @@
 add_lldb_unittest(ObjectFileELFTests
-  TestELFHeader.cpp
   TestObjectFileELF.cpp
 
   LINK_LIBS

Removed: lldb/trunk/unittests/ObjectFile/ELF/TestELFHeader.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/ObjectFile/ELF/TestELFHeader.cpp?rev=337458&view=auto
==============================================================================
--- lldb/trunk/unittests/ObjectFile/ELF/TestELFHeader.cpp (original)
+++ lldb/trunk/unittests/ObjectFile/ELF/TestELFHeader.cpp (removed)
@@ -1,62 +0,0 @@
-//===-- TestELFHeader.cpp ---------------------------------------*- C++ -*-===//
-//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "Plugins/ObjectFile/ELF/ELFHeader.h"
-#include "lldb/Utility/DataExtractor.h"
-#include "gtest/gtest.h"
-
-using namespace lldb;
-using namespace lldb_private;
-
-
-TEST(ELFHeader, ParseHeaderExtension) {
-  uint8_t data[] = {
-      // e_ident
-      0x7f, 0x45, 0x4c, 0x46, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
-      0x00, 0x00, 0x00, 0x00,
-
-      // e_type, e_machine, e_version, e_entry
-      0x03, 0x00, 0x3e, 0x00, 0x01, 0x00, 0x00, 0x00, 0x90, 0x48, 0x40, 0x00,
-      0x00, 0x00, 0x00, 0x00,
-
-      // e_phoff, e_shoff
-      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
-      0x00, 0x00, 0x00, 0x00,
-
-      // e_flags, e_ehsize, e_phentsize, e_phnum, e_shentsize, e_shnum,
-      // e_shstrndx
-      0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x38, 0x00, 0xff, 0xff, 0x40, 0x00,
-      0x00, 0x00, 0xff, 0xff,
-
-      // sh_name, sh_type, sh_flags
-      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-      0x00, 0x00, 0x00, 0x00,
-
-      // sh_addr, sh_offset
-      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-      0x00, 0x00, 0x00, 0x00,
-
-      // sh_size, sh_link, sh_info
-      0x23, 0x45, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x56, 0x78, 0x00,
-      0x12, 0x34, 0x56, 0x00,
-
-      // sh_addralign, sh_entsize
-      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-      0x00, 0x00, 0x00, 0x00,
-  };
-
-  DataExtractor extractor(data, sizeof data, eByteOrderLittle, 8);
-  elf::ELFHeader header;
-  offset_t offset = 0;
-  ASSERT_TRUE(header.Parse(extractor, &offset));
-  EXPECT_EQ(0x563412u, header.e_phnum);
-  EXPECT_EQ(0x785634u, header.e_shstrndx);
-  EXPECT_EQ(0x674523u, header.e_shnum);
-}




More information about the lldb-commits mailing list