Clean up more code

- Found some bugs in LLVM compiler-rt library
- The useless LIBC_STUBS package is now deleted
- Improve the overflow checking story even further
- Get chibicc tests working in MODE=dbg mode again
- The libc/isystem/ headers now have correctly named guards
This commit is contained in:
Justine Tunney 2023-06-18 00:55:09 -07:00
parent afc58a8b41
commit d7c79f43ef
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
294 changed files with 912 additions and 1208 deletions

View file

@ -20,6 +20,7 @@
#include "libc/calls/calls.h"
#include "libc/calls/struct/iovec.h"
#include "libc/calls/struct/stat.h"
#include "libc/elf/def.h"
#include "libc/elf/elf.h"
#include "libc/errno.h"
#include "libc/fmt/conv.h"
@ -247,8 +248,9 @@ int main(int argc, char *argv[]) {
CHECK_NE(MAP_FAILED,
(elf = mmap(0, st->st_size, PROT_READ, MAP_PRIVATE, fd, 0)));
CHECK(IsElf64Binary(elf, st->st_size), "%s", arg);
CHECK_NOTNULL((strs = GetElfStringTable(elf, st->st_size)));
CHECK_NOTNULL((syms = GetElfSymbolTable(elf, st->st_size, &symcount)));
CHECK_NOTNULL((strs = GetElfStringTable(elf, st->st_size, ".strtab")));
CHECK_NOTNULL(
(syms = GetElfSymbolTable(elf, st->st_size, SHT_SYMTAB, &symcount)));
for (j = 0; j < symcount; ++j) {
if (syms[j].st_shndx == SHN_UNDEF) continue;
if (syms[j].st_other == STV_INTERNAL) continue;

View file

@ -53,7 +53,6 @@ TOOL_BUILD_DIRECTDEPS = \
LIBC_SOCK \
LIBC_STDIO \
LIBC_STR \
LIBC_STUBS \
LIBC_SYSV \
LIBC_SYSV_CALLS \
LIBC_THREAD \

View file

@ -350,13 +350,13 @@ static void FixupObject(void) {
if (!IsElf64Binary(elf, esize)) {
Die("not an elf64 binary");
}
if (!(syms = GetElfSymbolTable(elf, esize, &symcount))) {
if (!(syms = GetElfSymbolTable(elf, esize, SHT_SYMTAB, &symcount))) {
Die("missing elf symbol table");
}
if (!(secstrs = GetElfSectionNameStringTable(elf, esize))) {
Die("missing elf section string table");
}
if (!(symstrs = GetElfStringTable(elf, esize))) {
if (!(symstrs = GetElfStringTable(elf, esize, ".strtab"))) {
Die("missing elf symbol string table");
}
CheckPrivilegedCrossReferences();

View file

@ -16,16 +16,15 @@
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
*/
#include "tool/build/lib/buffer.h"
#include "libc/calls/calls.h"
#include "libc/errno.h"
#include "libc/fmt/fmt.h"
#include "libc/intrin/tpenc.h"
#include "libc/macros.internal.h"
#include "libc/mem/arraylist2.internal.h"
#include "libc/mem/fmt.h"
#include "libc/mem/mem.h"
#include "libc/str/str.h"
#include "tool/build/lib/buffer.h"
/* TODO(jart): replace with new append*() library */

View file

@ -33,7 +33,6 @@ TOOL_BUILD_LIB_A_OBJS = \
TOOL_BUILD_LIB_A_DIRECTDEPS = \
LIBC_CALLS \
LIBC_ELF \
LIBC_FMT \
LIBC_INTRIN \
LIBC_LOG \
@ -43,7 +42,6 @@ TOOL_BUILD_LIB_A_DIRECTDEPS = \
LIBC_SOCK \
LIBC_STDIO \
LIBC_STR \
LIBC_STUBS \
LIBC_SYSV \
LIBC_SYSV_CALLS \
LIBC_TIME \
@ -109,6 +107,8 @@ TOOL_BUILD_LIB_CHECKS = $(foreach x,$(TOOL_BUILD_LIB_ARTIFACTS),$($(x)_CHECKS))
TOOL_BUILD_LIB_OBJS = $(foreach x,$(TOOL_BUILD_LIB_ARTIFACTS),$($(x)_OBJS))
TOOL_BUILD_LIB_TESTS = $(foreach x,$(TOOL_BUILD_LIB_ARTIFACTS),$($(x)_TESTS))
$(TOOL_BUILD_LIB_OBJS): tool/build/lib/buildlib.mk
.PHONY: o/$(MODE)/tool/build/lib
o/$(MODE)/tool/build/lib: \
$(TOOL_BUILD_LIB_COMS) \

View file

@ -526,10 +526,11 @@ static void OpenObject(struct Package *pkg, struct Object *obj, int oid) {
if (!IsElf64Binary(obj->elf, obj->size)) {
Die(path, "not an elf64 binary");
}
if (!(obj->strs = GetElfStringTable(obj->elf, obj->size))) {
if (!(obj->strs = GetElfStringTable(obj->elf, obj->size, ".strtab"))) {
Die(path, "missing elf string table");
}
if (!(obj->syms = GetElfSymbolTable(obj->elf, obj->size, &obj->symcount))) {
if (!(obj->syms = GetElfSymbolTable(obj->elf, obj->size, SHT_SYMTAB,
&obj->symcount))) {
Die(path, "missing elf symbol table");
}
IndexSections(pkg, obj);