head	1.4;
access;
symbols
	netbsd-11-0-RC4:1.3
	netbsd-11-0-RC3:1.3
	netbsd-11-0-RC2:1.3
	netbsd-11-0-RC1:1.3
	gcc-14-3-0:1.1.1.2
	perseant-exfatfs-base-20250801:1.3
	netbsd-11:1.3.0.4
	netbsd-11-base:1.3
	gcc-12-5-0:1.1.1.1
	perseant-exfatfs-base-20240630:1.3
	gcc-12-4-0:1.1.1.1
	perseant-exfatfs:1.3.0.2
	perseant-exfatfs-base:1.3
	gcc-12-3-0:1.1.1.1
	gcc-10-5-0:1.1.1.1
	gcc-10-4-0:1.1.1.1
	cjep_sun2x:1.2.0.4
	cjep_sun2x-base:1.2
	cjep_staticlib_x-base1:1.2
	cjep_staticlib_x:1.2.0.2
	cjep_staticlib_x-base:1.2
	gcc-10-3-0:1.1.1.1
	FSF:1.1.1;
locks; strict;
comment	@// @;


1.4
date	2025.09.14.00.08.58;	author mrg;	state Exp;
branches;
next	1.3;
commitid	x9D5QEnvbeMI4CaG;

1.3
date	2023.07.31.01.44.57;	author mrg;	state Exp;
branches;
next	1.2;
commitid	q79F5Opf0FLsyTyE;

1.2
date	2021.04.11.23.54.28;	author mrg;	state dead;
branches;
next	1.1;
commitid	wJn7ggfUTEMOWVOC;

1.1
date	2021.04.10.22.09.22;	author mrg;	state Exp;
branches
	1.1.1.1;
next	;
commitid	eC4g0MRpqTvEkNOC;

1.1.1.1
date	2021.04.10.22.09.22;	author mrg;	state Exp;
branches;
next	1.1.1.2;
commitid	eC4g0MRpqTvEkNOC;

1.1.1.2
date	2025.09.13.23.45.04;	author mrg;	state Exp;
branches;
next	;
commitid	KwhwN4krNWa6XBaG;


desc
@@


1.4
log
@merge GCC 14.3.0.
@
text
@//===-- tsan_malloc_mac.cpp -----------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// This file is a part of ThreadSanitizer (TSan), a race detector.
//
// Mac-specific malloc interception.
//===----------------------------------------------------------------------===//

#include "sanitizer_common/sanitizer_platform.h"
#if SANITIZER_APPLE

#include "sanitizer_common/sanitizer_errno.h"
#include "tsan_interceptors.h"
#include "tsan_stack_trace.h"
#include "tsan_mman.h"

using namespace __tsan;
#define COMMON_MALLOC_ZONE_NAME "tsan"
#define COMMON_MALLOC_ENTER()
#define COMMON_MALLOC_SANITIZER_INITIALIZED (cur_thread()->is_inited)
#define COMMON_MALLOC_FORCE_LOCK()
#define COMMON_MALLOC_FORCE_UNLOCK()
#define COMMON_MALLOC_MEMALIGN(alignment, size) \
  void *p =                                     \
      user_memalign(cur_thread(), StackTrace::GetCurrentPc(), alignment, size)
#define COMMON_MALLOC_MALLOC(size)                             \
  if (in_symbolizer()) return InternalAlloc(size);             \
  void *p = 0;                                                 \
  {                                                            \
    SCOPED_INTERCEPTOR_RAW(malloc, size);                      \
    p = user_alloc(thr, pc, size);                             \
  }                                                            \
  invoke_malloc_hook(p, size)
#define COMMON_MALLOC_REALLOC(ptr, size)                              \
  if (in_symbolizer()) return InternalRealloc(ptr, size);             \
  if (ptr)                                                            \
    invoke_free_hook(ptr);                                            \
  void *p = 0;                                                        \
  {                                                                   \
    SCOPED_INTERCEPTOR_RAW(realloc, ptr, size);                       \
    p = user_realloc(thr, pc, ptr, size);                             \
  }                                                                   \
  invoke_malloc_hook(p, size)
#define COMMON_MALLOC_CALLOC(count, size)                              \
  if (in_symbolizer()) return InternalCalloc(count, size);             \
  void *p = 0;                                                         \
  {                                                                    \
    SCOPED_INTERCEPTOR_RAW(calloc, size, count);                       \
    p = user_calloc(thr, pc, size, count);                             \
  }                                                                    \
  invoke_malloc_hook(p, size * count)
#define COMMON_MALLOC_POSIX_MEMALIGN(memptr, alignment, size)      \
  if (in_symbolizer()) {                                           \
    void *p = InternalAlloc(size, nullptr, alignment);             \
    if (!p) return errno_ENOMEM;                                   \
    *memptr = p;                                                   \
    return 0;                                                      \
  }                                                                \
  SCOPED_INTERCEPTOR_RAW(posix_memalign, memptr, alignment, size); \
  int res = user_posix_memalign(thr, pc, memptr, alignment, size);
#define COMMON_MALLOC_VALLOC(size)                            \
  if (in_symbolizer())                                        \
    return InternalAlloc(size, nullptr, GetPageSizeCached()); \
  SCOPED_INTERCEPTOR_RAW(valloc, size);                       \
  void *p = user_valloc(thr, pc, size)
#define COMMON_MALLOC_FREE(ptr)                              \
  if (in_symbolizer()) return InternalFree(ptr);             \
  invoke_free_hook(ptr);                                     \
  SCOPED_INTERCEPTOR_RAW(free, ptr);                         \
  user_free(thr, pc, ptr)
#define COMMON_MALLOC_SIZE(ptr) uptr size = user_alloc_usable_size(ptr);
#define COMMON_MALLOC_FILL_STATS(zone, stats)
#define COMMON_MALLOC_REPORT_UNKNOWN_REALLOC(ptr, zone_ptr, zone_name) \
  (void)zone_name; \
  Report("mz_realloc(%p) -- attempting to realloc unallocated memory.\n", ptr);
#define COMMON_MALLOC_NAMESPACE __tsan
#define COMMON_MALLOC_HAS_ZONE_ENUMERATOR 0
#define COMMON_MALLOC_HAS_EXTRA_INTROSPECTION_INIT 0

#include "sanitizer_common/sanitizer_malloc_mac.inc"

#endif
@


1.3
log
@make this actually be GCC 12.3.0's libsanitizer.

the libsanitizer we used with GCC 9 and GCC 10 was significantly
ahead of the GCC 9 and GCC 10 provided versions.
@
text
@d15 1
a15 1
#if SANITIZER_MAC
d20 1
d33 6
a38 2
  SCOPED_INTERCEPTOR_RAW(malloc, size);                        \
  void *p = user_alloc(thr, pc, size)
d41 8
a48 2
  SCOPED_INTERCEPTOR_RAW(realloc, ptr, size);                         \
  void *p = user_realloc(thr, pc, ptr, size)
d51 6
a56 2
  SCOPED_INTERCEPTOR_RAW(calloc, size, count);                         \
  void *p = user_calloc(thr, pc, size, count)
d73 1
@


1.2
log
@revert sanitizer back to the version we were using with GCC 9, since
that one was already newer than the GCC 10 version.
@
text
@@


1.1
log
@Initial revision
@
text
@@


1.1.1.1
log
@initial import of GCC 10.3.0.  main changes include:

caveats:
- ABI issue between c++14 and c++17 fixed
- profile mode is removed from libstdc++
- -fno-common is now the default

new features:
- new flags -fallocation-dce, -fprofile-partial-training,
  -fprofile-reproducible, -fprofile-prefix-path, and -fanalyzer
- many new compile and link time optimisations
- enhanced drive optimisations
- openacc 2.6 support
- openmp 5.0 features
- new warnings: -Wstring-compare and -Wzero-length-bounds
- extended warnings: -Warray-bounds, -Wformat-overflow,
  -Wrestrict, -Wreturn-local-addr, -Wstringop-overflow,
  -Warith-conversion, -Wmismatched-tags, and -Wredundant-tags
- some likely C2X features implemented
- more C++20 implemented
- many new arm & intel CPUs known

hundreds of reported bugs are fixed.  full list of changes
can be found at:

   https://gcc.gnu.org/gcc-10/changes.html
@
text
@@


1.1.1.2
log
@initial import of GCC 14.3.0.

major changes in GCC 13:
- improved sanitizer
- zstd debug info compression
- LTO improvements
- SARIF based diagnostic support
- new warnings: -Wxor-used-as-pow, -Wenum-int-mismatch, -Wself-move,
  -Wdangling-reference
- many new -Wanalyzer* specific warnings
- enhanced warnings: -Wpessimizing-move, -Wredundant-move
- new attributes to mark file descriptors, c++23 "assume"
- several C23 features added
- several C++23 features added
- many new features for Arm, x86, RISC-V

major changes in GCC 14:
- more strict C99 or newer support
- ia64* marked deprecated (but seemingly still in GCC 15.)
- several new hardening features
- support for "hardbool", which can have user supplied values of true/false
- explicit support for stack scrubbing upon function exit
- better auto-vectorisation support
- added clang-compatible __has_feature and __has_extension
- more C23, including -std=c23
- several C++26 features added
- better diagnostics in C++ templates
- new warnings: -Wnrvo, Welaborated-enum-base
- many new features for Arm, x86, RISC-V
- possible ABI breaking change for SPARC64 and small structures with arrays
  of floats.
@
text
@d15 1
a15 1
#if SANITIZER_APPLE
a19 1
#include "tsan_mman.h"
d32 2
a33 6
  void *p = 0;                                                 \
  {                                                            \
    SCOPED_INTERCEPTOR_RAW(malloc, size);                      \
    p = user_alloc(thr, pc, size);                             \
  }                                                            \
  invoke_malloc_hook(p, size)
d36 2
a37 8
  if (ptr)                                                            \
    invoke_free_hook(ptr);                                            \
  void *p = 0;                                                        \
  {                                                                   \
    SCOPED_INTERCEPTOR_RAW(realloc, ptr, size);                       \
    p = user_realloc(thr, pc, ptr, size);                             \
  }                                                                   \
  invoke_malloc_hook(p, size)
d40 2
a41 6
  void *p = 0;                                                         \
  {                                                                    \
    SCOPED_INTERCEPTOR_RAW(calloc, size, count);                       \
    p = user_calloc(thr, pc, size, count);                             \
  }                                                                    \
  invoke_malloc_hook(p, size * count)
a57 1
  invoke_free_hook(ptr);                                     \
@

