From 28f582ad7f43d546186d9104a375b77a478102fe Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Fri, 17 Feb 2017 23:38:50 +0100 Subject: [PATCH] doing some work on hidding symbols... --- malloc/Makefile | 13 ++++--- malloc/includes/malloc.h | 34 ++-------------- malloc/includes/malloc_internal.h | 56 +++++++++++++++++++++++++++ malloc/libft | 2 +- malloc/libft_malloc_x86_64_Darwin.so | Bin 12004 -> 8876 bytes malloc/main.c | 6 +-- malloc/run.sh | 5 +++ malloc/src/free.c | 4 +- malloc/src/insert_node.c | 4 +- malloc/src/malloc.c | 6 +-- malloc/src/show_alloc_mem.c | 41 ++++++++++---------- 11 files changed, 102 insertions(+), 69 deletions(-) create mode 100644 malloc/includes/malloc_internal.h create mode 100755 malloc/run.sh diff --git a/malloc/Makefile b/malloc/Makefile index 0304ea74..90b545b5 100644 --- a/malloc/Makefile +++ b/malloc/Makefile @@ -6,8 +6,10 @@ NAME = libft_malloc.so ARCH_NAME = libft_malloc_$(HOSTTYPE).so CC = gcc -FLAGS = -Wall -Wextra -Werror -D_FLAGS = -g +W_FLAGS = -Wall -Wextra -Werror +V_FLAGS = -fvisibility=hidden +D_FLAGS = +FLAGS = $(W_FLAGS) $(V_FLAGS) $(D_FLAGS) DELTA = $$(echo "$$(tput cols)-47"|bc) @@ -34,13 +36,14 @@ all : @make -j $(NAME) $(NAME): $(LIBFT_LIB) $(OBJ_DIR) $(OBJS) - @$(CC) --shared $(FLAGS) $(D_FLAGS) \ + @$(CC) --shared $(FLAGS)\ -I $(INC_DIR) \ -I $(LIBFT_INC) \ $(LIBS) \ $(LIBFT_LIB) $(OBJS) \ -o $(ARCH_NAME) @ln -fs $(ARCH_NAME) $(NAME) + @strip -x $(NAME) @printf "\r\e[48;5;15;38;5;25m✅ MAKE $(ARCH_NAME)\e[0m\e[K\n" $(LIBFT_LIB): @@ -56,7 +59,7 @@ $(OBJ_DIR)%.o : $(SRC_DIR)%.c | $(OBJ_DIR) @$(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) $(D_FLAGS) -MMD -c $< -o $@\ + @$(CC) $(FLAGS) -MMD -c $< -o $@\ -I $(INC_DIR)\ -I $(LIBFT_INC) @$(eval INDEX=$(shell echo $$(($(INDEX)+1)))) @@ -80,7 +83,7 @@ re: fclean all relib: fcleanlib $(LIBFT_LIB) test: - gcc -lft_malloc -L. -Iincludes -o myprogram main.c + gcc -lft_malloc -L. -Iincludes -I$(LIBFT_INC) -o myprogram main.c .PHONY : fclean clean re relib cleanlib fcleanlib diff --git a/malloc/includes/malloc.h b/malloc/includes/malloc.h index 07a3c41f..482cabbc 100644 --- a/malloc/includes/malloc.h +++ b/malloc/includes/malloc.h @@ -5,47 +5,19 @@ /* +:+ +:+ +:+ */ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2017/02/17 12:28:05 by jhalford #+# #+# */ -/* Updated: 2017/02/17 13:17:57 by jhalford ### ########.fr */ +/* Created: 2017/02/17 23:00:06 by jhalford #+# #+# */ +/* Updated: 2017/02/17 23:00:10 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef MALLOC_H # define MALLOC_H -# define malloc_n 64 -# define malloc_m 1024 -# define malloc_N (1 * getpagesize()) -# define malloc_M (2 * getpagesize()) -# define malloc_magic 1234567 -# define HEADER_SIZE (sizeof(t_node)) -# define TINY(x) (x < (malloc_n + 1)) -# define SMALL(x) (!TINY(x) && !LARGE(x)) -# define LARGE(x) (malloc_m < x) - -#include "../libft/includes/libft.h" -#include - -typedef struct s_header { - int size; - int magic; -} t_header; - -typedef struct s_node { - int size; - struct s_node *next; -} t_node; - -extern t_node *tiny_zone; -extern t_node *small_zone; -extern t_node *tiny_alloc; -extern t_node *small_alloc; +#include "stdlib.h" void free(void *ptr); void *malloc(size_t size); void *realloc(void *ptr, size_t size); void show_alloc_mem(void); -void show_free_mem(void); -void insert_node(t_node **head, t_node *new); #endif diff --git a/malloc/includes/malloc_internal.h b/malloc/includes/malloc_internal.h new file mode 100644 index 00000000..6120b12d --- /dev/null +++ b/malloc/includes/malloc_internal.h @@ -0,0 +1,56 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* malloc_internal.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/17 23:00:24 by jhalford #+# #+# */ +/* Updated: 2017/02/17 23:25:09 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef MALLOC_INTERNAL_H +# define MALLOC_INTERNAL_H + +# define malloc_n 64 +# define malloc_m 1024 +# define malloc_N (1 * getpagesize()) +# define malloc_M (2 * getpagesize()) +# define malloc_magic 1234567 +# define HEADER_SIZE (sizeof(t_node)) +# define TINY(x) (x < (malloc_n + 1)) +# define SMALL(x) (!TINY(x) && !LARGE(x)) +# define LARGE(x) (malloc_m < x) + +#include "libft.h" +#include + +typedef struct s_header { + int size; + int magic; +} t_header; + +typedef struct s_node { + int size; + struct s_node *next; +} t_node; + +extern t_node *tiny_zone; +extern t_node *small_zone; +extern t_node *tiny_alloc; +extern t_node *small_alloc; + +# pragma GCC visibility push(default) + +void free(void *ptr); +void *malloc(size_t size); +void *realloc(void *ptr, size_t size); +void show_alloc_mem(void); + +# pragma GCC visibility pop + +void show_free_mem(void); +void insert_node(t_node **head, t_node *new); + +#endif diff --git a/malloc/libft b/malloc/libft index b9c0c4cb..a82ea94e 160000 --- a/malloc/libft +++ b/malloc/libft @@ -1 +1 @@ -Subproject commit b9c0c4cbb1adf15f11e681951500f23ad1f34c60 +Subproject commit a82ea94ef7f50f8396d7bf6f9c08ab4a7faa994d diff --git a/malloc/libft_malloc_x86_64_Darwin.so b/malloc/libft_malloc_x86_64_Darwin.so index 71181154b57db7bcc0d6b6e7a708dba29bc9b548..9c5adf87fd22e76f1178fb09892b0f6ded5d31de 100755 GIT binary patch delta 1326 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 Rmu+c@%L$bT^uH06{{Y62a}fXl diff --git a/malloc/main.c b/malloc/main.c index a4601ef8..9933afc1 100644 --- a/malloc/main.c +++ b/malloc/main.c @@ -1,10 +1,8 @@ -#include "malloc.h" +#include "includes/malloc.h" +#include int main(void) { - printf("pagesize=[%i]\n", getpagesize()); - printf("sizeof(long)=[%lu]\n", sizeof(long)); - void *ptr0 = malloc(8150); show_alloc_mem(); printf("\n"); diff --git a/malloc/run.sh b/malloc/run.sh new file mode 100755 index 00000000..19faa239 --- /dev/null +++ b/malloc/run.sh @@ -0,0 +1,5 @@ +#!/bin/sh +export DYLD_LIBRARY_PATH=. +export DYLD_INSERT_LIBRARIES="libft_malloc.so" +export DYLD_FORCE_FLAT_NAMESPACE=1 +$@ diff --git a/malloc/src/free.c b/malloc/src/free.c index 01483f5c..77f01321 100644 --- a/malloc/src/free.c +++ b/malloc/src/free.c @@ -6,11 +6,11 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 12:28:03 by jhalford #+# #+# */ -/* Updated: 2017/02/17 13:18:39 by jhalford ### ########.fr */ +/* Updated: 2017/02/17 23:02:10 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ -#include "malloc.h" +#include "malloc_internal.h" int remove_node(t_node **head, t_node *node) { diff --git a/malloc/src/insert_node.c b/malloc/src/insert_node.c index 7b16e788..ddbb1104 100644 --- a/malloc/src/insert_node.c +++ b/malloc/src/insert_node.c @@ -6,11 +6,11 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 12:28:15 by jhalford #+# #+# */ -/* Updated: 2017/02/17 12:28:15 by jhalford ### ########.fr */ +/* Updated: 2017/02/17 23:02:17 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ -#include "malloc.h" +#include "malloc_internal.h" void insert_node(t_node **head, t_node *new) { diff --git a/malloc/src/malloc.c b/malloc/src/malloc.c index 64baa2bf..bdde52c4 100644 --- a/malloc/src/malloc.c +++ b/malloc/src/malloc.c @@ -6,11 +6,11 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 12:28:02 by jhalford #+# #+# */ -/* Updated: 2017/02/17 13:18:34 by jhalford ### ########.fr */ +/* Updated: 2017/02/17 23:02:14 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ -#include "malloc.h" +#include "malloc_internal.h" t_node *tiny_zone = NULL; t_node *small_zone = NULL; @@ -63,7 +63,7 @@ void *malloc(size_t size) t_node **node_ref; void *ptr; - printf("malloc(%zu) was called\n", size); + printf("malloc(%zu) called\n", size); if (LARGE(size)) { zone_ref = &large_zone; diff --git a/malloc/src/show_alloc_mem.c b/malloc/src/show_alloc_mem.c index 16d1fd06..2a21ce08 100644 --- a/malloc/src/show_alloc_mem.c +++ b/malloc/src/show_alloc_mem.c @@ -6,11 +6,11 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 12:28:20 by jhalford #+# #+# */ -/* Updated: 2017/02/17 13:18:10 by jhalford ### ########.fr */ +/* Updated: 2017/02/17 23:13:52 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ -#include "malloc.h" +#include "malloc_internal.h" t_node *tiny_zone; t_node *small_zone; @@ -41,28 +41,27 @@ void print_alloc_mem(t_node *node) addr, (void*)addr + size, size, HEADER_SIZE, size > 1 ? 's' : 0); } -int show_zone(t_node *node, int is_free, size_t (*total)[3]) -{ - while (node) - { - is_free ? print_free_mem(node) : print_alloc_mem(node); - (*total)[is_free ? 0 : 1] += node->size; - (*total)[2] += is_free ? 0 : HEADER_SIZE; - node = node->next; - } - return (0); -} - void show_alloc_zone(char *name, t_node *alloc, t_node *zone, size_t (*total)[3]) { - if (!alloc && !zone) - return ; - ft_putstr(name); + if (alloc || zone) + printf("%s", name); + /* printf("%s", FG_RED); */ ft_putstr(FG_RED); - show_zone(alloc, 0, total); - ft_putstr(FG_GREEN); - show_zone(zone, 1, total); - ft_putstr(FG_DEFAULT); + while (alloc) + { + print_alloc_mem(alloc); + (*total)[1] += alloc->size; + (*total)[2] += HEADER_SIZE; + alloc = alloc->next; + } + printf("%s", FG_GREEN); + while (zone) + { + print_free_mem(zone); + (*total)[0] += zone->size; + zone = zone->next; + } + printf("%s", FG_DEFAULT); } void show_alloc_mem(void)