From d6732360a1948ba0084d5ca6ca28b11e16651fff Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Sun, 19 Feb 2017 03:56:59 +0100 Subject: [PATCH] debut de nm d'apres la video de l'intra --- nm-otool/.gitmodules | 3 ++ nm-otool/Makefile | 84 ++++++++++++++++++++++++++++++++++ nm-otool/ft_nm | Bin 0 -> 21300 bytes nm-otool/includes/ft_nm.h | 25 +++++++++++ nm-otool/libft | 1 + nm-otool/src/ft_nm.c | 87 ++++++++++++++++++++++++++++++++++++ nm-otool/update_makefile.sh | 17 +++++++ 7 files changed, 217 insertions(+) create mode 100644 nm-otool/.gitmodules create mode 100644 nm-otool/Makefile create mode 100755 nm-otool/ft_nm create mode 100644 nm-otool/includes/ft_nm.h create mode 160000 nm-otool/libft create mode 100644 nm-otool/src/ft_nm.c create mode 100755 nm-otool/update_makefile.sh diff --git a/nm-otool/.gitmodules b/nm-otool/.gitmodules new file mode 100644 index 00000000..c82793fb --- /dev/null +++ b/nm-otool/.gitmodules @@ -0,0 +1,3 @@ +[submodule "libft"] + path = libft + url = https://github.com/jzck/libft diff --git a/nm-otool/Makefile b/nm-otool/Makefile new file mode 100644 index 00000000..d7903305 --- /dev/null +++ b/nm-otool/Makefile @@ -0,0 +1,84 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: jhalford +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2017/02/19 03:29:38 by jhalford #+# #+# # +# Updated: 2017/02/19 03:56:22 by jhalford ### ########.fr # +# # +# **************************************************************************** # + +NAME = ft_nm + +CC = gcc +MKDIR = mkdir -p +RM = /bin/rm -rf + +W_FLAGS = -Wall -Wextra -Werror +D_FLAGS = +V_FLAGS = -fvisibility=hidden +FLAGS = $(W_FLAGS) $(D_FLAGS) $(V_FLAGS) + +DELTA = $$(echo "$$(tput cols)-47"|bc) + +LIBFT_DIR = libft/ +LIBFT_LIB = $(LIBFT_DIR)libft.a +LIBFT_INC = $(LIBFT_DIR)includes/ + +SRC_DIR = src/ +INC_DIR = includes/ +OBJ_DIR = objs/ + +SRC_BASE = \ +ft_nm.c + +SRCS = $(addprefix $(SRC_DIR), $(SRC_BASE)) +OBJS = $(addprefix $(OBJ_DIR), $(SRC_BASE:.c=.o)) +NB = $(words $(SRC_BASE)) +INDEX = 0 + +all: + @make -j $(NAME) + +$(NAME): $(OBJ_DIR) $(OBJS) + @$(CC) $(FLAGS) $(D_FLAGS) \ + -I $(INC_DIR) \ + -I $(LIBFT_INC) \ + $(LIBS) \ + $(LIBFT_LIB) $(OBJS) \ + -o $(NAME) + @$(eval INDEX=$(shell echo $$(($(INDEX)+1)))) + @strip -x $(NAME) + @printf "\r\e[48;5;15;38;5;25m✅ MAKE $(NAME)\e[0m\e[K\n" + +$(OBJ_DIR)%.o: $(SRC_DIR)%.c | $(OBJ_DIR) + @$(eval DONE=$(shell echo $$(($(INDEX)*20/$(NB))))) + @$(eval PERCENT=$(shell echo $$(($(INDEX)*100/$(NB))))) + @$(eval COLOR=$(shell echo $$(($(PERCENT)%35+196)))) + @$(eval TO_DO=$(shell echo $$((20-$(INDEX)*20/$(NB))))) + @printf "\r\e[38;5;11m⌛ MAKE %10.10s : %2d%% \e[48;5;%dm%*s\e[0m%*s\e[48;5;255m \e[0m \e[38;5;11m %*s\e[0m\e[K" $(NAME) $(PERCENT) $(COLOR) $(DONE) "" $(TO_DO) "" $(DELTA) "$@" + @$(CC) $(FLAGS) -MMD -c $< -o $@\ + -I $(INC_DIR) \ + -I $(LIBFT_INC) + @$(eval INDEX=$(shell echo $$(($(INDEX)+1)))) + +$(OBJ_DIR): + @$(MKDIR) $(OBJ_DIR) + @$(MKDIR) $(dir $(OBJS)) + +clean: + @$(RM) $(OBJ_DIR) + @printf "\r\e[38;5;202m✖ clean $(NAME).\e[0m\e[K\n" + +fclean: clean + @$(RM) $(NAME) + @printf "\r\e[38;5;196m❌ fclean $(NAME).\e[0m\e[K\n" + +re: fclean all + +.PHONY: all clean fclean re + +-include $(OBJS:.o=.d) + diff --git a/nm-otool/ft_nm b/nm-otool/ft_nm new file mode 100755 index 0000000000000000000000000000000000000000..776fcb2b68035c22079f9ba3aeeb846e05ecebe1 GIT binary patch literal 21300 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 B`1b$+ literal 0 HcmV?d00001 diff --git a/nm-otool/includes/ft_nm.h b/nm-otool/includes/ft_nm.h new file mode 100644 index 00000000..7b70ee1d --- /dev/null +++ b/nm-otool/includes/ft_nm.h @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_nm.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/19 03:09:10 by jhalford #+# #+# */ +/* Updated: 2017/02/19 03:32:51 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef FT_NM_H +# define FT_NM_H + +# include "libft.h" +# include +# include +# include +# include +# include +# include +# include + +#endif diff --git a/nm-otool/libft b/nm-otool/libft new file mode 160000 index 00000000..0ca8ca81 --- /dev/null +++ b/nm-otool/libft @@ -0,0 +1 @@ +Subproject commit 0ca8ca817f32fc0345ef93ef74a3abe2583bd89c diff --git a/nm-otool/src/ft_nm.c b/nm-otool/src/ft_nm.c new file mode 100644 index 00000000..e15c128e --- /dev/null +++ b/nm-otool/src/ft_nm.c @@ -0,0 +1,87 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_nm.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/19 03:09:12 by jhalford #+# #+# */ +/* Updated: 2017/02/19 03:56:34 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ft_nm.h" + +void print_output(int nsyms, int symoff, int stroff, void *ptr) +{ + int i; + char *stringtable; + struct nlist_64 *array; + + array = ptr + symoff; + stringtable = (void*)ptr + stroff; + for (i = 0; i < nsyms; ++i) + { + ft_printf("%s\n", stringtable + array[i].n_un.n_strx); + } +} + +void handle_64(void *ptr) +{ + int ncmds; + int i; + struct mach_header_64 *header; + struct load_command *lc; + struct symtab_command *sym; + + header = (struct mach_header_64*)ptr; + ncmds = header->ncmds; + lc = ptr + sizeof(*header); + for (i = 0; i < ncmds; i++) + { + if (lc->cmd == LC_SYMTAB) + { + sym = (struct symtab_command*)lc; + /* ft_printf("nb symbols: %d\n", sym->nsyms); */ + print_output(sym->nsyms, sym->symoff, sym->stroff, ptr); + break ; + } + lc = (void*)lc + lc->cmdsize; + } +} + +void nm(char *ptr) +{ + unsigned int magic_number; + + magic_number = *(int *)ptr; + if (magic_number == MH_MAGIC_64) + { + /* ft_printf("je suis un binaire 64 bits\n"); */ + handle_64(ptr); + } +} + +int main(int ac, char **av) +{ + int fd; + char *ptr; + struct stat buf; + + if (ac != 2) + { + ft_dprintf(2, "Please give me an arg\n"); + return (1); + } + if ((fd = open(av[1], O_RDONLY)) < 0) + return (1); + if ((fstat(fd, &buf)) < 0) + return (1); + if ((ptr = mmap(NULL, buf.st_size, PROT_READ, MAP_PRIVATE, fd, 0)) + == MAP_FAILED) + return (1); + nm(ptr); + if (munmap(ptr, buf.st_size)) + return (1); + return (0); +} diff --git a/nm-otool/update_makefile.sh b/nm-otool/update_makefile.sh new file mode 100755 index 00000000..a1b3228d --- /dev/null +++ b/nm-otool/update_makefile.sh @@ -0,0 +1,17 @@ +MYPATH=$(pwd) +CUR_MAKEFILE=$MYPATH/Makefile +if [ -e $CUR_MAKEFILE ] +then + echo "regenerate Makefile" + sed "`grep -n 'SRC_BASE =' $CUR_MAKEFILE | sed 's/:.*//'`, \$d" $CUR_MAKEFILE > NEWMAKEFILE + grep 'SRC_BASE =' $CUR_MAKEFILE >> NEWMAKEFILE + expr "$(find ./src | grep "\.c" | sed -e 's/src\///' -e 's/\.\///' -e 's/$/\\/')" : "\(.*\).$" >> NEWMAKEFILE + echo "" >> NEWMAKEFILE + grep 'SRCS =' $CUR_MAKEFILE >> NEWMAKEFILE + sed "1, `grep -n 'SRCS =' $CUR_MAKEFILE | sed 's/:.*//'`d" $CUR_MAKEFILE >> NEWMAKEFILE + mv $CUR_MAKEFILE ~/Documents/.OLDMakefile + mv NEWMAKEFILE $CUR_MAKEFILE + echo "Makefile done (copy still alive in ~/Documents/.OLDMakefile)" +else + echo "Makefile not found." +fi