PROJECT(postlinker C)
+
ADD_EXECUTABLE(${PROJECT_NAME} postlinker.c)
+ADD_EXECUTABLE(${PROJECT_NAME}_64 postlinker_64.c)
+
INSTALL(TARGETS ${PROJECT_NAME} DESTINATION /)
int totalSymbolCnt;
int pos;
- FILE *fp;
- int done;
- int done2;
+ FILE *fp = NULL;
+ int done = 0;
int symbolOff = 0;
int symEntrySize = 0;
int hashOff = 0;
- int Len;
- fp = NULL;
fp = fopen(fileName, "r+");
if (fp == NULL) {
for (int i = 0; DynEntries[i].d_tag != DT_NULL; ++i) {
switch (DynEntries[i].d_tag) {
case DT_NEEDED:
- done = DT_GARBAGE;
DynEntries[i].d_tag = DT_GARBAGE;
break;
case DT_SYMTAB:
if (!fread(pMapSymbolTable, symEntrySize * totalSymbolCnt, 1, fp))
printf("error[%s] : file read <pMapSymbolTable>\n", fileName);
- done2 = 0;
for (int i = 1; i < totalSymbolCnt; ++i) {
if (pMapSymbolTable[i].st_shndx == SHN_UNDEF &&
pMapSymbolTable[i].st_value == 0 &&
((pMapSymbolTable[i].st_info & 0xF) == STT_FUNC ||
(pMapSymbolTable[i].st_info & 0xF) == STT_OBJECT ||
(pMapSymbolTable[i].st_info & 0xF) == STT_NOTYPE)) {
- if (pMapSymbolTable[i].st_name == 0)
- done2 = 0;
-
pMapSymbolTable[i].st_name = 0;
pMapSymbolTable[i].st_value = 0;
pMapSymbolTable[i].st_size = 0;
pMapSymbolTable[i].st_info = 0;
pMapSymbolTable[i].st_shndx = 0;
- done2 = 1;
+ done = 1;
}
}
if (!done) {
- //printf("DT_NEEDED field is already removed : %s\n", fileName);
- // return 1;
- }
-
- if (!done2) {
printf("Undefined symbols are already removed : %s\n", fileName);
return 1;
}
int totalSymbolCnt;
int pos;
- FILE *fp;
- int done;
- int done2;
+ FILE *fp = NULL;
+ int done = 0;
int symbolOff = 0;
int symEntrySize = 0;
int hashOff = 0;
- int Len;
- fp = NULL;
fp = fopen(fileName, "r+");
if (fp == NULL) {
for (int i = 0; DynEntries[i].d_tag != DT_NULL; ++i) {
switch (DynEntries[i].d_tag) {
case DT_NEEDED:
- done = DT_GARBAGE;
DynEntries[i].d_tag = DT_GARBAGE;
break;
case DT_SYMTAB:
if (!fread(pMapSymbolTable, symEntrySize * totalSymbolCnt, 1, fp))
printf("error[%s] : file read <pMapSymbolTable>\n", fileName);
- done2 = 0;
for (int i = 1; i < totalSymbolCnt; ++i) {
if (pMapSymbolTable[i].st_shndx == SHN_UNDEF &&
pMapSymbolTable[i].st_value == 0 &&
((pMapSymbolTable[i].st_info & 0xF) == STT_FUNC ||
(pMapSymbolTable[i].st_info & 0xF) == STT_OBJECT ||
(pMapSymbolTable[i].st_info & 0xF) == STT_NOTYPE)) {
- if (pMapSymbolTable[i].st_name == 0)
- done2 = 0;
-
pMapSymbolTable[i].st_name = 0;
pMapSymbolTable[i].st_value = 0;
pMapSymbolTable[i].st_size = 0;
pMapSymbolTable[i].st_info = 0;
pMapSymbolTable[i].st_shndx = 0;
- done2 = 1;
+ done = 1;
}
}
- if (!done2) {
+ if (!done) {
printf("Undefined symbols are already removed : %s\n", fileName);
return 1;
}