16cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV/*
26cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV * Copyright (C) 2017 The Android Open Source Project
36cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV * All rights reserved.
46cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV *
56cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV * Redistribution and use in source and binary forms, with or without
66cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV * modification, are permitted provided that the following conditions
76cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV * are met:
86cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV *  * Redistributions of source code must retain the above copyright
96cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV *    notice, this list of conditions and the following disclaimer.
106cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV *  * Redistributions in binary form must reproduce the above copyright
116cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV *    notice, this list of conditions and the following disclaimer in
126cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV *    the documentation and/or other materials provided with the
136cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV *    distribution.
146cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV *
156cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
166cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
176cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
186cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
196cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
206cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
216cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
226cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
236cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
246cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
256cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
266cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV * SUCH DAMAGE.
276cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV */
286cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV
296cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV#include <private/bionic_asm.h>
306cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV
316cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IVENTRY(__memcpy_chk)
326cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV  cmp x2, x3
336cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV  bls memcpy
346cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV
356cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV  // Preserve for accurate backtrace.
366cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV  stp x29, x30, [sp, -16]!
376cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV  .cfi_def_cfa_offset 16
386cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV  .cfi_rel_offset x29, 0
396cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV  .cfi_rel_offset x30, 8
406cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV
416cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IV  bl __memcpy_chk_fail
426cb06879323cb45440ca1c7b42a2cc754b3d50c6George Burgess IVEND(__memcpy_chk)
43