diff --git a/Makefile b/Makefile index 7b93a43..7c8b8f0 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,16 @@ -CC := gcc -AS := nasm -ASFLAGS := -g -f elf64 -I src/ -CFLAGS := -g -Wall -Wextra -Wno-override-init -std=c2x -fPIC -fPIE -MAIN := $(wildcard *.c) -SRC := $(wildcard src/*.s) -OBJ_DIR := build -OBJ_CC := $(addprefix $(OBJ_DIR)/, $(patsubst %.c,%.o, $(MAIN))) -OBJ_AS := $(addprefix $(OBJ_DIR)/, $(patsubst %.s,%.o, $(SRC))) -DIR := . -NAME := main -LIB_NAME:= asm +CC := gcc +AS := nasm +ASFLAGS := -g -f elf64 -I src/ +CFLAGS := -g -Wall -Wextra -Wno-override-init -std=c2x -fPIC -fPIE +MAIN := $(wildcard *.c) +SRC := $(wildcard src/*.s) +OBJ_DIR := build +OBJ_CC := $(addprefix $(OBJ_DIR)/, $(patsubst %.c,%.o, $(MAIN))) +OBJ_AS := $(addprefix $(OBJ_DIR)/, $(patsubst %.s,%.o, $(SRC))) +DIR := . +NAME := main +LIB_NAME := asm +PATH_LIB_NAME := $(OBJ_DIR)/lib$(LIB_NAME).a LD := $(CC) LDFLAGS := -L$(OBJ_DIR) -l$(LIB_NAME) -fPIC -fPIE @@ -17,10 +18,12 @@ LDFLAGS := -L$(OBJ_DIR) -l$(LIB_NAME) -fPIC -fPIE all: $(NAME) -$(NAME): $(OBJ_CC) $(OBJ_AS) - ar rcs $(OBJ_DIR)/lib$(LIB_NAME).a $(OBJ_AS) +$(NAME): $(PATH_LIB_NAME) $(OBJ_CC) $(LD) $(OBJ_CC) $(LDFLAGS) -o $(DIR)/$(NAME) +$(PATH_LIB_NAME): $(OBJ_AS) + ar rcs $(PATH_LIB_NAME) $(OBJ_AS) + $(OBJ_DIR)/%.o: %.c @mkdir -p $(@D) $(CC) $(CFLAGS) -c -o $@ $< @@ -30,9 +33,9 @@ $(OBJ_DIR)/%.o: %.s $(AS) $(ASFLAGS) $< -o $@ clean: - @rm -f $(NAME) @rm -rf $(OBJ_DIR) -re: - @make --no-print clean - @make --no-print all +fclean: clean + @rm -f $(NAME) + +re: fclean all diff --git a/main.c b/main.c index 7624abe..74e5dda 100644 --- a/main.c +++ b/main.c @@ -185,6 +185,8 @@ test_calloc() { char *empty = ft_calloc(0, 0); printf("empty: %p\n", empty); + char *overflow = ft_calloc(); + char *buf = ft_calloc(10, 1); strcpy(buf, "test"); printf("test: %s_%p\n", buf, buf); diff --git a/main.h b/main.h index 0b43c56..474a49a 100644 --- a/main.h +++ b/main.h @@ -7,6 +7,7 @@ #include #include #include +#include // DONE extern size_t ft_strlen(const char *s); diff --git a/src/ft_calloc.s b/src/ft_calloc.s index e4dab1a..7fe6b09 100644 --- a/src/ft_calloc.s +++ b/src/ft_calloc.s @@ -9,7 +9,9 @@ section .text push rbx mov rbx, rdi - mov rdi, rbx + mul rbx, rsi + xor rdi, rdi + cmovno rdi, rbx; Move if not overflow call malloc wrt ..plt cmp rax, 0